0
클로저가 유지할 개체 유형을 어떻게 알 수 있습니까? 클로저가 보유하거나 보유하지 않을 특정 규칙 또는 유형 목록이 있습니까?블록이 클로저에서 유지할 개체 유형은 무엇입니까?
클로저가 유지할 개체 유형을 어떻게 알 수 있습니까? 클로저가 보유하거나 보유하지 않을 특정 규칙 또는 유형 목록이 있습니까?블록이 클로저에서 유지할 개체 유형은 무엇입니까?
모든 Objective-C 객체가 유지됩니다. 그 밖의 모든 것은 단순히 복사됩니다.
NSArray* array = [NSArray array];
int i = 0;
int* ptr = malloc(sizeof(int));
세 변수 가 블록 내부를 판독 할 수있다 : 예를 들어, 다음 세 가지 변수이다. 그러나 array
만이 retain
메서드를 호출 할 수있는 유일한 변수이기 때문에 유지됩니다.
블록을 실행할 때 포인터가 유지 될 수 있으므로 ptr
지점이 계속 존재하도록주의해야합니다.
만약 내가'int i'와'int * i'를 가지고 있다면, 둘 다 유지 될 것입니다. Obj-C와 non-Obj-C 객체를 어떻게 구별 할 수 있습니까? – Pablo
@Michael, Objective-C objects는 Objective-C 메소드를 호출 할 수있는 값입니다. 예를 들어'foo'라는 NSString이 있다면'[foo retain]'을 호출 할 수 있습니다. 이런 식으로 할 수 없다면 Objective-C 객체가 아닙니다. 내 대답을 편집했습니다. – zneak
우수 답변! 고마워!!! – Pablo