Objective-C:为他们制作 iVars @public 或 @synthesizing @properties?我什么时候应该使用属性?
-
13-11-2019 - |
题
我的类中有一些实例变量,我希望可以在任何地方访问它们。就像这样:
@interface SomeObject : NSObject
{
@public
NSString *someString;
}
@end
@implementation SomeObject
@end
我可以使用以下方法从实例访问该属性 ->
语法如下,就像我在 C++ 中所做的那样:
someObjectInstance->someString
我应该为 someString
当我想要的只是让外界可以访问它时?我会创建一个 @property
为了 someString
在我的界面和 @synthesize
它在我的实现中,这将使我能够使用点语法访问它。
解决方案
一般来说,如果要公开数据,就应该使用属性。一般来说,公开实例变量是一个坏主意。
其他提示
这是一种更面向对象的方法,因为在使用属性时,如果您希望它执行其他操作,您可以稍后更改 getter/setter(而不是合成它)。
是的,因为当你把它变成一个 @property
正在指导使用它的人们致电 setSomeString
和 someString
方法,实际上。即使你是 @synthesize
荷兰国际集团,使用这些方法对您的代码质量更好,因为您 可以 如果需要,请更改它们。如果您只是使用指针引用,如果您发现自己需要拦截访问,您将无法做到这一点。
不隶属于 StackOverflow