달력

2

« 2025/2 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
2010. 5. 24. 20:52

[12일차]Protocol Objective-C2010. 5. 24. 20:52


6. 프로토콜의 정합성 여부확인
* 재정의하면 안되는 메서드
+(BOOL)conformsToProtocol:@protocol(프로토콜이름)
                                         ==>대신에 프로토콜클래스 객체를 이용해도 됨
-(BOOL)conformsToProtocol:@protocol(프로토콜이름)
:호출하는 인스턴스나 클래스가 프로토콜이름에 기재된 프로토콜을 인증하고 있으면 YES 아니면 NO를 리턴
:프로토콜 클래스 객체 얻기
Protocol * 변수명 = @protocol(프로토콜이름)


앞쪽의 프로토콜과 클래스 구현부
    <ProtocolToString>    =>Test<ProtocolToString>


7. 비공식 프로토콜 =>@required (필수), @optional (선택) 로 전향
:
=>NSObject의 카테고리를 생성해서 메서드를 구현해도되고 안해도 되는 형태
=>프로토콜의 인증을 받으려면 프로토콜에 선언되어 있는 모든 메서드를구현


*AutoreleasePool (임시변수 생성시 활용)
1. AutoreleasePool
=>foundation에 속한 클래스읭 인스턴스들은 시스템이 메모리공간을 해제할 수 있도록 AutoreleasePool에 등록이 되어야 합니다.
=>인스턴스들이 release를 호출하지 않아도 pool이 drain을 호출하는 순간 자동적으로 release를 수행
=>AutoreleasePool에 등록하는 방법은 autorelease라는 메서드를 호출하면 됩니다. 현재위치에서 가장 가까운 pool에 등록됨
=>등록을 해도 retainCount에는 변함이 없으며 pool이 drain 될때 retainCount만 1씩 감소

1)생성
NSAutoreleasePool * 변수명 = [[NSAutoreleasePool alloc] init];

2)해제
[변수명 drain];
=>NSAutoreleasePool.h 에 정의 및 구현

* 자동적으로 retainCount가 변하는 경우
=> 강한 참조를 사용하는 collection에 삽입되는 경우 retain을 호출한것과 동일한 효과
=> collection에서 제거되는 경우 release를 호출한것과 동일한 효과
=>Copy메서드를 이용한 복사시에도 retain을 호출하는 효과

ex)retain, alloc, release를 호출하지 않아도 retainCount가 변하는 경우
:
Posted by 에너지발전소