2014-08-28 145 views
-3

我有一個NSMutablestring的問題。當我使用它而不覆蓋我的類init方法時,它不起作用。NSMutableString初始化問題

我的界面代碼:

@interface Topic : NSObject 

@property (strong, nonatomic) NSMutableString *title; 
@property (strong, nonatomic) NSMutableString *description; 

@end 

如果我創建了一個對象與此類,然後試圖將一個字符串分配給「稱號」,它的NSLog打印空!

這是當我試圖使用它我的代碼:

Topic *myTopic = [[Topic alloc] init]; 
[myTopic.title appendString:@"Hello World"]; 

爲了避免這個問題,我不得不重寫我的主題類init()方法,並添加這一行:

self.title = [[NSMutableString alloc]init]; 

任何理念?

編輯:這行應該初始化我的屬性和方法的權利(不重寫init方法)?

Topic *myTopic = [[Topic alloc] init]; 

感謝,

+3

是什麼問題? – 2014-08-28 02:54:15

+2

你必須重寫'init'方法並分配你的字符串或者在別處手動分配它們......它們不會神奇地初始化它們自己。 – rebello95 2014-08-28 02:54:19

+0

請至少請學習一些基本的Objective-C教程。 – 2014-08-28 02:56:28

回答

1

當你第一次創建你的對象,標題目標是零。您必須初始化標題對象,然後才能向其添加任何內容。

self.title = [[NSMutableString alloc] init]; 

你應該在適當的地方設置它 - 例如,在視圖控制器上的viewDidLoad。

有關爲什麼您不想在init方法中執行此操作,請參閱Tommy的註釋。

+1

我不是下來的選民,我懷疑這是投票的原因,但是:你不應該在你的'init'中調用setter。你不知道一個子類是否覆蓋它。 – Tommy 2014-08-28 02:59:31

+0

此信息已包含在原始文章中。 – 2014-08-28 03:01:07

+0

對不起,我應該指定。 – nzeltzer 2014-08-28 03:01:42