【发布时间】:2011-10-23 07:31:51
【问题描述】:
有人告诉我,我可以将属性设为私有,这样只有类的实例才能引用它们(通过自身)。
但是,如果我在类接口中使用@private,然后正常声明属性,仍然可以从类外部访问它......那么我怎样才能将属性设为私有呢?请提供语法示例。
【问题讨论】:
标签: iphone objective-c ios xcode properties
有人告诉我,我可以将属性设为私有,这样只有类的实例才能引用它们(通过自身)。
但是,如果我在类接口中使用@private,然后正常声明属性,仍然可以从类外部访问它......那么我怎样才能将属性设为私有呢?请提供语法示例。
【问题讨论】:
标签: iphone objective-c ios xcode properties
在实现 (.m) 文件中声明属性,如下所示:
@interface MyClass()
@property (nonatomic, retain) MyPrivateClass *secretProperty;
@end
您将能够在您的类中使用该属性而不会出现编译器警告。
【讨论】:
您需要在类扩展中包含这些属性。这允许您在接口声明的实现文件中定义属性(以及最近的 iVar)。它类似于定义一个类别,但括号之间没有名称。
如果这是你的 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
【讨论】: