(可能非常简单)initWithString似乎不起作用

时间:2013-01-04 22:29:56

标签: objective-c nsstring

我正在关注的objc教程使用以下初始化:

NSString* p = [[NSString alloc] initWithString:@"something"];

然而,前一章中所述的相同教程可以将这些类型的结构分解为:

NSString* p = [NSString alloc];
[p initWithString: @"something"];

但是,如果我尝试使用NSLog显示 p 的值,则会发生异常:

main: Uncaught exception NSInternalInconsistencyException, reason: attempt to use uninitialised string

这可能很容易,但我似乎无法找到答案。

2 个答案:

答案 0 :(得分:6)

您必须将变量设置为init的返回值:

NSString* p = [NSString alloc];
p = [p initWithString: @"something"];

答案 1 :(得分:2)

这是来自NSObject的手册,关于init方法:

  

在某些情况下,init方法可能会返回替换对象。因此,您必须始终在后续代码中使用init返回的对象,而不是alloc或allocWithZone:返回的对象。