我的课程中有一些实例变量,我想在任何地方都可以访问。像这样:
@interface SomeObject : NSObject
{
@public
NSString *someString;
}
@end
@implementation SomeObject
@end
我可以使用如下所示的->
语法从实例访问该属性,就像我在C ++中所做的那样:
someObjectInstance->someString
我应该为someString
创建一个属性,当我想要的是外部世界可以访问它时?我会在我的界面中为@property
创建一个someString
,在我的实现中为@synthesize
创建一个{{1}},这样我就可以使用点语法来访问它。
答案 0 :(得分:3)
一般来说,如果要公开数据,则应使用属性。一般来说,将实例变量公开是一个坏主意。
答案 1 :(得分:0)
这是更加面向对象的方式,因为在使用属性时,如果你想要它做其他事情,你可以稍后更改getter / setter(而不是让它合成)。
答案 2 :(得分:0)
是的,因为当您将其设为@property
时,您所做的就是指导人们使用它来实际调用setSomeString
和someString
方法。即使你@synthesize
它们,你的代码质量最好使用这些方法,因为你可以在需要的时候更改它们。如果您只是使用指针引用,如果您发现自己需要拦截访问,那么您将无法访问。