实例变量超出范围

时间:2010-07-19 12:13:08

标签: iphone objective-c

我有一个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。

2 个答案:

答案 0 :(得分:0)

是的,这是对的。你没有发布它。但你也没有分配它。 ;-)首先你打电话给self.textWithKey = [[NSString alloc] init]。比你打self.textWithKey = @""。因为您使用属性的setter,所以每次都会释放旧的赋值。请尝试以下方法:

self.textWithKey = [[NSString alloc] initWithString:@""];

由于

self.textWithKey = @"";

相同
self.textWithKey = [NSString stringWithString:@""];

你没有分配任何东西。 ; - )

答案 1 :(得分:0)

超出范围的变量与发布的变量不同。