gpt4 book ai didi

objective-c - 为什么 iPhone 在直接字段(不是通过 getters/setters)访问时崩溃

转载 作者:行者123 更新时间:2023-11-29 04:59:16 26 4
gpt4 key购买 nike

[抱歉我的英语不好]

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

并在 -viewdidLoad 中使用一些字符串初始化它

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

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

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

它表明我需要添加属性并通过 self.names 合成和使用它然后它似乎起作用了......但这对我来说是令人困惑和悲伤的,因为我确实不知道使用成员的第一种方式的原因是什么(没有 self 。没有属性(property)并合成)不起作用

谁能解释一下

TIA,冷杉

最佳答案

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

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

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

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

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

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

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

干杯!

关于objective-c - 为什么 iPhone 在直接字段(不是通过 getters/setters)访问时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7319585/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com