에 한글로 중요한 정보들이 적혀 있다.
를 다 읽어야 하겠다.
는 필수.
등 모든 문서가 다 한 번에 이해가 가는 것은 아니다.
에서는 copyWithZone 을 설명한다. 이것도 복잡해.. 뭐가 이리 많아
공부하고 봐도 __autoreleasing 과 __unsafe_unretained 는 잘 모르겠다.
2 |
BOOL OK = [myObject performOperationWithError:&error]; |
이것은, 변수로써 error의 선언을 다음과 같이 :
NSError *_strong e = nil;
로 보게되고, 함수에서 인자로써의 선언은 일반적으로 :
-(BOOL)performOperationWithError:(NSError *_autoreleasing *)error
이 됩니다.
이때 컴파일러는 코드를 다음과 같이 고쳐쓰게 됩니다.
1 |
NSError _strong *error = nil; |
2 |
NSError _autoreleasing *tmp = error; |
3 |
BOOL OK = [myObject performOperationWithError:&tmp]; |
지역 변수 선언(__strong)과 파라미터(__autoreleasing) 사이의 불일치는 컴라일러로하여금 임시변수를 생성하게 합니다. __strong 변수의 주소를 취할 경우 본래의 파라미터의 포인터는
id __strong *
으로 선언함으로써 획득할 수 있습니다.
RECENT COMMENT