标题文件:
NSString *righta;
@property(nonatomic, retain) NSString *righta;
(我通常不会为我的变量做@property声明,但认为这可能有助于变量在类中持续存在,尽管它没有)
实施文件:
@synthesize righta;
- (void) function1 {
righta = [NSString stringWithFormat:@"A"];
}
- (IBAction)function2:(id)sender {
NSLog(@"righta is still %@", righta);
}
在第二个函数中尝试访问字符串的值时,我收到“EXC_BAD_ACCESS”并且应用程序崩溃。
任何帮助都会非常感激。
谢谢!
答案 0 :(得分:2)
您必须使用
self.righta = [NSString stringWithFormat:@"A"];
要分配变量,否则不使用访问者,并且不保留该值。
答案 1 :(得分:2)
stringWithFormat
返回一个自动释放的对象。你必须保留它。请注意,您正在访问ivar directy,而不是属性,因此不会保留字符串。请改用该属性:
self.righta = [NSString stringWithFormat:@"A"];
有些程序员喜欢用不同的ivar名称合成他们的属性,以避免错误地直接访问ivar。
@synthesize righta = righta_;
答案 2 :(得分:1)
将function1更改为:
self.righta = [NSString stringWithFormat:@"A"];
你直接指派到右边的ivar而不保留字符串。