我對這段代碼有些疑惑:Self.target =等同於[self setTarget]對於合成屬性嗎?
@interface Foo {
id target_;
}
@property (nonatomic, readwrite, retain) id target;
@implementation Foo
@synthesize target = target_;
-(id)initWithTarget:(id)t {
if((self=[super init])) {
self.target = t;
}
return self;
}
-(void) dealloc {
[target release];
[super dealloc];
}
@end
問題:
- 是
self.target = t
完全等同於[self setTarget:t]
?- 如果是,
target = t
怎麼辦? - 如果是,
target
保留,對不對?
- 如果是,
- 這將是完美的罰款打電話
self.target = nil
在dealloc
方法,對嗎?因爲二傳手會釋放target
。
關於最後一個答案,你的意思是'[target_ release]; target_ = nil'吧? – Voldemort
@JustKidding是的,我想這可能是你的問題的錯誤。通過'target = nil'我的意思是通過'target_ = nil'直接設置伊娃。我會編輯我的答案。 –
是否需要'target_ = nil'?我的意思是,dealloc無論如何不是沒有好處? – Voldemort