我在viewController的(UITableViewController的子类).h文件中定义了两个NSMutableString对象:

NSMutableString *firstName;
NSMutableString *lastName;


它们是属性:

@property (nonatomic, retain) NSMutableString *firstName;
@property (nonatomic, retain) NSMutableString *lastName;


我将它们合成为.m文件。

在我的viewDidLoad方法中-将它们设置为空白字符串:

firstName = [NSMutableString stringWithString:@""];
lastName = [NSMutableString stringWithString:@""];


用户可以更改firstName和lastName。在我的cellForRowAtIndexPath方法中,我试图显示以下字符串的内容:

cell.detailTextLabel.text = [NSString stringWithFormat:@"%@ %@", firstName, lastName];


但这会导致应用程序在显示视图控制器后立即崩溃。使用调试器,似乎firstName和lastName都在“范围之外”或不存在。我是Xcode的新手,但调试器似乎在objc_msgSend处停止。

我究竟做错了什么?

最佳答案

问题是您需要执行以下操作:

self.firstName = ...
self.lastName = ...


这将调用自动生成的setter方法,该方法将保留这些值。通过直接分配,您将绕过设置器,并且一旦当前自动释放池耗尽,两个变量将具有悬空指针。

关于iphone - NSMutableString“超出范围”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2529354/

10-10 20:45