Objective-C:为他们制作 iVars @public 或 @synthesizing @properties?我什么时候应该使用属性?

StackOverflow https://stackoverflow.com/questions/8984921

  •  13-11-2019
  •  | 
  •  

我的类中有一些实例变量,我希望可以在任何地方访问它们。就像这样:

@interface SomeObject : NSObject
{
    @public
        NSString *someString;
}
@end

@implementation SomeObject
@end

我可以使用以下方法从实例访问该属性 -> 语法如下,就像我在 C++ 中所做的那样:

someObjectInstance->someString

我应该为 someString 当我想要的只是让外界可以访问它时?我会创建一个 @property 为了 someString 在我的界面和 @synthesize 它在我的实现中,这将使我能够使用点语法访问它。

有帮助吗?

解决方案

一般来说,如果要公开数据,就应该使用属性。一般来说,公开实例变量是一个坏主意。

其他提示

这是一种更面向对象的方法,因为在使用属性时,如果您希望它执行其他操作,您可以稍后更改 getter/setter(而不是合成它)。

是的,因为当你把它变成一个 @property 正在指导使用它的人们致电 setSomeStringsomeString 方法,实际上。即使你是 @synthesize荷兰国际集团,使用这些方法对您的代码质量更好,因为您 可以 如果需要,请更改它们。如果您只是使用指针引用,如果您发现自己需要拦截访问,您将无法做到这一点。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top