2011-09-07 38 views
0

第一後,我有一個類從NSObjectNSObject的發佈layoutSubviews

@interface Role : NSObject{ /*...*/ } @end 

繼承並有存儲瞬間的指針Role類的屬性。

@property (nonatomic, retain) Role * role; 

現在創建UIView的時候,我初始化Role類的瞬間。

Role * r = [[Role alloc] init]; 
role = r; 
[r release]; 

據我瞭解,物業role標有retian,然後它會自動增加引用計數,當我設置的值,當屬性設置爲無,當應用程序退出減少引用計數。

一切看起來不錯,但是當我運行應用程序時,我發現我會得到EXC_BAD_ACCESS異常。

我加入NSLog這是因爲Role瞬間有UIView呼叫layoutSubviews後一直releaseddealloced,我不明白爲什麼這會發生,因爲我沒有任何代碼release這個瞬間。

目前暫時對我的解決方法是:我的意見了線[r release]

請能有人給我一些解釋,如果有一些背景,我不知道layoutSubviews

謝謝

+0

爲了財產運作的,你需要使用它......所以,使用self.role = R; – D33pN16h7

回答

3

您直接訪問您的伊娃。這應該是:

self.role = r; 

避免直接訪問您的ivars;除了在initdealloc之外,總是使用訪問器。

2

實際上你應該調用屬性「setter方法」來保留值

self.role = r; 

[self setRole:r];