2011-03-16 7 views
0

다음 코드에서 보유 수는 2로 증가 할 것으로 예상되지만 할당 후에는 1로 유지됩니다. 할당은 retain 한정자가있는 속성에 대한 것입니다. 보유자는 객체의 보유 수를 1 씩 증가시킵니다. 보유 수를 증가시키지 않는 이유를 설명 할 수 있습니까?보존 된 속성에 할당 된 할당 된 개체의 보유 수

에서 MyClass.h :

@property (nonatomic,retain) UIImage * imageBackground; 

MyClass.m :없이

UIImage * IMAGE = [[UIImage alloc] initWithContentsOfFile:@"image.png"]; 
NSLog(@"retain-count(%d)", [IMAGE retainCount]); // returns 1 
imageBackground = IMAGE; 
NSLog(@"retain-count(%d)", [IMAGE retainCount]); // returns 1, should return 2 

답변

2
self.imageBackground = IMAGE; 

self. 당신은 재산의 세터를 사용하여, 따라서 이후 변경되지 않습니다 수를 유지하지 않습니다 그것은 단순한 포인터 할당이었습니다.

+0

감사합니다! 이것은 내 코드에서 많은 문제를 해결 한 대답입니다. 몇 시간 동안 내 머리를 긁적 거리고 있습니다! – andrewz

관련 문제