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

时间:2012-01-24 10:04:52

标签: objective-c properties ivar

我的课程中有一些实例变量,我想在任何地方都可以访问。像这样:

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

@implementation SomeObject
@end

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

someObjectInstance->someString

我应该为someString创建一个属性,当我想要的是外部世界可以访问它时?我会在我的界面中为@property创建一个someString,在我的实现中为@synthesize创建一个{{1}},这样我就可以使用点语法来访问它。

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

这是更加面向对象的方式,因为在使用属性时,如果你想要它做其他事情,你可以稍后更改getter / setter(而不是让它合成)。

答案 2 :(得分:0)

是的,因为当您将其设为@property时,您所做的就是指导人们使用它来实际调用setSomeStringsomeString方法。即使你@synthesize它们,你的代码质量最好使用这些方法,因为你可以在需要的时候更改它们。如果您只是使用指针引用,如果您发现自己需要拦截访问,那么您将无法访问。

相关问题