我在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/