2014-08-28 147 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