2011-06-13 3 views

답변

1

모든 Objective-C 객체가 유지됩니다. 그 밖의 모든 것은 단순히 복사됩니다.

NSArray* array = [NSArray array]; 
int i = 0; 
int* ptr = malloc(sizeof(int)); 

세 변수 가 블록 내부를 판독 할 수있다 : 예를 들어, 다음 세 가지 변수이다. 그러나 array 만이 retain 메서드를 호출 할 수있는 유일한 변수이기 때문에 유지됩니다.

블록을 실행할 때 포인터가 유지 될 수 있으므로 ptr 지점이 계속 존재하도록주의해야합니다.

+0

만약 내가'int i'와'int * i'를 가지고 있다면, 둘 다 유지 될 것입니다. Obj-C와 non-Obj-C 객체를 어떻게 구별 할 수 있습니까? – Pablo

+0

@Michael, Objective-C objects는 Objective-C 메소드를 호출 할 수있는 값입니다. 예를 들어'foo'라는 NSString이 있다면'[foo retain]'을 호출 할 수 있습니다. 이런 식으로 할 수 없다면 Objective-C 객체가 아닙니다. 내 대답을 편집했습니다. – zneak

+0

우수 답변! 고마워!!! – Pablo

관련 문제