【发布时间】:2014-08-31 18:30:37
【问题描述】:
可可开发教程声明所有实例变量在声明时都是私有的
访问器
默认情况下,Objective-C 中的所有实例变量都是私有的,所以你 在大多数情况下,应该使用访问器来获取和设置值。有 两种语法。这是传统的 1.x 语法:
[photo setCaption:@"Day at the Beach"]; output = [photo caption];第二行的代码没有读取实例变量 直接地。它实际上是在调用一个名为 caption 的方法。大多数情况下, 您不会在 Objective-C 中的 getter 中添加“get”前缀。
每次你想要价值时都不需要访问器不是更容易吗?为什么它们会自动声明为私有?
【问题讨论】:
-
默认情况下它们是私有的。这在我所知道的所有编程语言中都很常见,例如默认情况下要保护或私有的变量。
-
例如,C++ 有
struct和class,它们在所有意图和目的上都是相同的概念,除了struct成员默认是公共的,class成员是私有的. Java 和 Objective-C 没有struct等效项。 -
@TheParamagneticCroissant - Objective-C 的类方案不包括结构。例如,您不能将结构放在 NSArray 中。
-
@TheParamagneticCroissant 你做到了。 HotLicks 指出Java 和Objective-C 没有
struct等效项(与您在C++ 中找到的相同)。你不同意他,但你的不同意是错误的。使用 Objective-Cstruct无法做到使用 C++struct可以做到的事情。 -
我在寻找更多的理由,但我认为有这么多意见的事实是因为没有一个很好的明确理由。
标签: objective-c instance-variables getter-setter accessor