我试图在我的土地上建立一个私有财产*.m
file:
@interface MyClass (Private)
@property (nonatomic, retain) NSMutableArray *stuff;
@end
@implementation MyClass
@synthesize stuff; // not ok
编译器声称没有声明任何东西属性。但有一个东西。只是在匿名类别中。让我猜猜:不可能。其他解决方案?
您想使用“类扩展”而不是类别:
@interface MyClass ()
@property (nonatomic, retain) NSMutableArray *stuff;
@end
@implementation MyClass
@synthesize stuff; // ok
Objective-C 2.0 中创建的类扩展部分是专门为此目的而创建的。类扩展的优点是编译器将它们视为原始类定义的一部分,因此可以警告不完整的实现。
除了纯粹的私有属性之外,您还可以创建内部可读写的只读公共属性。可以在类扩展中重新声明属性,仅用于更改访问权限(只读与读写),但声明中的属性必须相同。因此你可以这样做:
//MyClass.h
@interface MyClass : NSObject
{ }
@property (nonatomic,retain,redonly) NSArray *myProperty;
@end
//MyClass.m
@interface MyClass ()
@property (nonatomic, retain, readwrite) NSArray *myProperty;
@end
@implementation MyClass
@synthesize myProperty;
//...
@end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)