为什么iphone在直接字段(不是由getter / setter)访问时崩溃

时间:2011-09-06 12:02:10

标签: objective-c ios

[抱歉我的英语不好]

如果我创建一些字符串的NSArray (作为对象的成员字段 - 没有属性没有合成),

并在-viewdidLoad中用一些字符串

初始化它

names = [NSArray arrayWithObjects:@“jeden”,@“dwa”,@“trzy”,nil];

并立即(也在-viewDidLoad中)将使用它,没关系。

但是当我稍后尝试使用它及其数据时,在按钮事件处理程序中, 它表明该数组数据已损坏(即使在[名称计数]上崩溃;)

它表明我需要添加属性并合成并通过self.names使用它 然后它似乎有效...但对我来说这让我感到困惑和伤心,因为我做到了 不知道使用该成员的第一种方式是什么原因(没有自我。没有财产 并合成)不工作

任何人都可以解释,

TIA,fir

2 个答案:

答案 0 :(得分:1)

names = [NSArray arrayWithObjects: @"jeden", @"dwa", @"trzy", nil]; 

对该对象进行自动释放引用,您需要(两者都将保留计数增加1):

  • 保留对象,我的意思是:

    names = [[NSArray arrayWithObjects:@“jeden”,@“dwa”,@“trzy”,nil] retain];

  • 或使用它们的新分配,我更喜欢这种方法:

    names = [[NSArray alloc] initWithObjects:@“jeden”,@“dwa”,@“trzy”,nil];

然后在dealloc部分中不要忘记释放它,以避免内存泄漏。

干杯!

答案 1 :(得分:0)

您应该正确初始化它以正确保留它:

names = [[NSArray alloc] initWithObjects:@"jeden", @"dwa", @"trzy", nil];
相关问题