如何使属性私有?

时间:2011-08-09 14:53:06

标签: iphone objective-c ios xcode properties

有人告诉我,我可以将属性设为私有,这样只有类的一个实例可以引用它们(通过self。)

但是,如果我在类接口中使用@private然后正常声明属性,它仍然可以从类外部访问...那么如何才能将属性设为私有?语法示例请。

2 个答案:

答案 0 :(得分:21)

您需要在类扩展中包含这些属性。这允许您在接口声明中定义实现文件中的属性(以及最近的iVars)。它类似于定义类别但在括号之间没有名称。

所以如果这是你的MyClass.m文件:

// Class Extension Definition in the implementation file
@interface MyClass()

@property (nonatomic, retain) NSString *myString; 

@end

@implementation MyClass

- (id)init
{
    self = [super init];
    if( self )
    {
        // This property can only be accessed within the class
        self.myString = @"Hello!";
    }
}

@end

答案 1 :(得分:5)

在实现(.m)文件中声明属性,如下所示:

@interface MyClass()

@property (nonatomic, retain) MyPrivateClass *secretProperty;

@end

您可以在类中使用该属性而无需编译器警告。