// ClassA.m
NSString *strA = [[NSstring alloc] initWithString:@"test string"];
ClassB *classB = [[ClassB alloc] init];
[classB setStrB:strA];
[strA release];
// classB will be released later
// ClassB.h
@property (nonatomic, retain) NSString *strB;
// ClassB.m
// custom setter
-(void) setStrB:(NSString *)newStr {
strB = newStr;
}
威爾STRB泄漏?它應該在ClassB dealloc方法中發佈嗎?內存管理:這段代碼是否有內存泄漏?
有一個保留「聲明「,但執行者沒有保留。 – 2010-10-28 17:12:39
我不認爲你在這裏是正確的。使用自定義setter不會增加strB上的保留計數。因此,代碼不會按原樣泄漏,但也不會按照您的要求執行,因爲稍後您將無法訪問classB.strB,因爲它已發佈。 – 2010-10-29 10:04:57