2013-03-09 61 views
0

我試圖創建NSString類別,但嘗試訪問getters/setter時該應用程序崩潰。Objective-C NSString類別Getter/Setter崩潰

#import <Foundation/Foundation.h> 
#import <AddressBook/AddressBook.h> 

@interface NSString (MyCat) 

@property (assign, nonatomic) ABRecordRef personRef; 

- (void)setPersonRef:(ABRecordRef)personRef; 
- (ABRecordRef)personRef; 

@end 

任何人都可以指出問題所在?

+1

不要感謝我的代碼崩潰,我沒有造成這種情況。 – 2013-03-09 20:46:28

+0

你有錯誤信息與崩潰? – 2013-03-09 20:47:28

+0

不,只是EXC_BAD_ACCESS – jkigel 2013-03-09 20:48:45

回答

3

您無法通過類別向類添加屬性。允許添加方法是因爲它不會增加類的大小。屬性不只是添加一個getter和setter方法,他們還會爲你的類添加一個字段。將屬性/字段添加到現有類的最佳方法是對其進行子類化。

+2

屬性實際上只是提供某些訪問方法的承諾。屬性不一定意味着存在一個實例變量。 AFAIK,很有可能在一個類別中添加屬性。 – Caleb 2013-03-09 22:52:22

+0

@Caleb nope,屬性也爲屬性添加存儲到類中,否則自動生成的setter/getter將在哪裏存儲您設置的數據? – Lance 2013-03-09 22:53:31

+0

Caleb其實從某種意義上來說你是對的,但是在某些時候你必須爲這個屬性設置一個支持域。大部分時間,編譯器會自動爲你調用@sythesize。然而,在這種情況下,這將不起作用,因爲NSString已經被編譯到SDK中。 – Lance 2013-03-09 22:58:07