gpt4 book ai didi

objective-c - 帮我理解为什么: [self propertyName] works while propertyName doesn't

转载 作者:行者123 更新时间:2023-12-03 17:42:55 27 4
gpt4 key购买 nike

所以我定义了一个带有属性的类 - 在本示例中我们将其称为 propertyName。我在实现中使用 @synthesize 设置了属性。

我有一个名为 objectToNSDictionary 的方法,它基本上将该属性转储到字典中:

NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:
[self propertyName], @"propertyName", nil];

我将该字典返回给调用者,我使用 JsonWriter 将其转换为字符串并将其传递给某些服务...

可以说上面的方法是有效的。但是,我最初的实现没有使用[self propertyName],而是仅使用propertyName。当我这样做时,当我尝试在调用者中使用该对象时,总是出现错误,提示无法识别的选择器已发送到实例

语法的真正含义是什么?为什么一种有效而另一种无效?

最佳答案

当您使用[self propertyName]时,您将通过合成的getter方法引用您为类定义的属性。当您直接使用 propertyName 时,您将绕过该属性并直接使用类 ivar。只要您的 ivar 确实称为 propertyName,这就会起作用,这不是必需的,也可能不是这种情况。一般来说,直接访问 ivar 是一个坏主意,因为这样做会绕过编译器为您生成的内存管理支架。

您需要从调用类中发布相关代码,以便能够了解为什么收到“选择器无法识别”消息。

关于objective-c - 帮我理解为什么: [self propertyName] works while propertyName doesn't,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7194498/

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