我有一个NSString,它已被声明为属性,并在视图中分配和初始化,如下所示加载:
NSString *textWithKey;
@property(nonatomic,retain)NSString *textWithKey;
在.m我有
@synthesize textWithKey;
并且在viewDidLoad中我有
self.textWithKey=[[NSString alloc]init];
self.textWithKey=@"";
现在在我的代码中某处使用
self.textWithKey=[self.textWithKey stringByAppendingString:text1];
它工作正常,直到调用另一个返回不同值的方法。 并且从那里再次调用此perticularline但调试器显示textWithKey超出范围。我没有在任何地方释放textWihKey。
答案 0 :(得分:0)
是的,这是对的。你没有发布它。但你也没有分配它。 ;-)首先你打电话给self.textWithKey = [[NSString alloc] init]
。比你打self.textWithKey = @""
。因为您使用属性的setter,所以每次都会释放旧的赋值。请尝试以下方法:
self.textWithKey = [[NSString alloc] initWithString:@""];
由于
self.textWithKey = @"";
与
相同self.textWithKey = [NSString stringWithString:@""];
你没有分配任何东西。 ; - )
答案 1 :(得分:0)
超出范围的变量与发布的变量不同。