gpt4 book ai didi

objective-c - NSArray(和其他 Cocoa 类型)@property 值

转载 作者:行者123 更新时间:2023-12-03 16:24:52 27 4
gpt4 key购买 nike

在调试同事编写的代码的过程中,我偶然发现了以下令我困惑的内容:

NSMutableArray *array = [NSMutableArray array];
NSUInteger arrayCount = array.count;

为什么这有效?它也适用于 NSDictionary 和其他类型,但在文档和 Cocoa header 中都找不到这些 @property 定义。

谷歌搜索“NSArray property”并没有产生很多有用的结果,所以我向 SO 寻求帮助,这肯定是一个非常尴尬的问题。

最佳答案

它之所以有效,是因为点语法与属性无关。它只是语法糖(虽然我不喜欢它,所以也许它是“语法盐”)。

当您使用点语法作为表达式(或等号右侧的表达式)的右值时,它会变得简单:

bar = myObject.thing;

进入

bar = [myObject thing];

当点位于等号左侧(作为左值)时,它将其转变为 setter。所以:

myObject.thing = 42;

成为

[myObject setThing:42];

所以,是的,您可以执行诸如 myObject.retain 之类的操作。但是你永远不应该这样做。您应该只使用点语法作为声明属性的访问器(即,通过 @property 显式声明的内容)。 <插入关于如何根本不应该使用点语法的评论。>

有关更多信息,请查看 the documentation on dot syntax (特别是“不正确使用”部分)。

关于objective-c - NSArray(和其他 Cocoa 类型)@property 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5100495/

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