1
我一直在徘徊如何我可以在我的dealloc方法很長一段時間釋放我的保留屬性。爲了清楚起見,這裏是一些示例代碼:如何釋放保留的屬性
@interface MyClass: NSObject
{
//...
NSString *myStr;
//...
}
@property (retain, nonatomic) NSString *myStr;
//...
@end
@implementation MyClass
@synthesize myStr;
//...
//version 1 of dealloc
-(void)dealloc
{
[myStr release];
//...
}
//version 2 of dealloc
-(void)dealloc
{
self.myStr = nil;
}
//...
@end
正如你所看到的,在我的示例代碼是dealloc方法的兩個版本。就我而言,第一個導致機器碼比第二個小,因此速度更快。但是我曾經聽說,以第二種方式處置保留的財產是一種好習慣,即通過使用self關鍵字調用setter來將其設置爲零。誰能告訴我這些是否都是真的?如果是這樣,我應該堅持「好習慣」還是隻是讓代碼更快,而不考慮「好習慣」?
預先感謝您。
明白了,謝謝。我瞭解到「self.myStr = nil;」將會是「[myStr release]; myStr = nil;」(這裏有兩條語句)。所以我認爲「[myStr發佈]」(單一語句)會更快。順便說一句,「副作用」,你在這裏的意思是什麼? – xuxu
@xuxu:KVO通知,對撤消堆棧的更改 - 這類事情。 – Chuck