我在.H以下代碼:iPhone權的方式來設置屬性
@property (nonatomic, retain) NSArray *arrayData;
,並在方法initWithNibName的.M:
self.arrayData = [NSArray arrayWithObjects:@"Usuario:",@"Password:",nil];
是不是爲了打電話
[self.arrayData release]
安全地爲了釋放對象?
我在.H以下代碼:iPhone權的方式來設置屬性
@property (nonatomic, retain) NSArray *arrayData;
,並在方法initWithNibName的.M:
self.arrayData = [NSArray arrayWithObjects:@"Usuario:",@"Password:",nil];
是不是爲了打電話
[self.arrayData release]
安全地爲了釋放對象?
不,這是不正確的呼叫釋放你的財產。問題是,你釋放你的財產,它會被釋放,但你沒有設置你的指針爲零,所以有人可能會發送消息到你的財產並導致崩潰。
你可以做的是:
希望這會有所幫助。
你需要調用:
[arrayData release]
調用[self.arrayData發佈];在任何情況下都不會產生你想要的效果。
如果你想知道這是爲什麼,看看這個問題了:difference between [self.property release] and [property release]
答案標記爲正確的這個問題是不正確。我剛剛就答案的原因進行了評論。 – Moszi 2011-01-11 23:13:15
A) 這是一個壞主意在你的初始化(例如,initWithNibName要做到這一點:捆綁:)
self.arrayData = [NSArray arrayWithObjects:@"Usuario:",@"Password:",nil];
用這個代替:
arrayData = [[NSArray alloc] initWithObjects:@"Usuario:",@"Password:",nil];
,你不應該調用這些訪問(屬性)在初始化程序或dealloc中。
B)
是不是爲了調用
[self.arrayData釋放]
沒有。在許多情況下(假設你實施了你宣佈的一些屬性),你可能不會被退回伊娃。您可能會收到副本,佔位符對象或可能選擇重新實現訪問器的子類(如一些示例)。在這些情況下,很容易過度釋放或過度保留(導致邪惡的東西,如泄漏和崩潰)。
這是典型的:
self.arrayData = nil;
除非你是在宣告伊娃對象的dealloc
:
- (void)dealloc {
[arrayData release], arrayData = nil;
[super dealloc];
}
將屬性中的對象設置爲零也會向其發送一個釋放?哇。 – 2011-01-11 23:17:32
okey它的工作原理是什麼,但設置arrayData的正確方法是什麼? self.arrayData = [NSArray ....]或 arrayData = [NSArray ....] 謝謝 – xger86x 2011-01-11 23:18:54