0

问题

我想用这个签名创建一个接口,但没有自动合成的实例变量:

@interface MyObject : NSObject
@property (nonatomic, copy) NSArray *values;
@end

问题:

是否可以防止在 .m @implementaion 中自动合成实例变量,因为我想实现自己的 getter 和 setter,而且我不打算使用实例变量。

原因:

原因是我不想有内存开销,因为数据将存储在纯字节存档中。同时我不希望用户知道实现问题并保持接口签名不变。

@implementation MyObject {
    NSData *_data
{
- (NSArray *)values
{
    // Generate NSArray from _data
}
- (void)setValues(NSArray *)values
{
    // Set _data from values
}
#pragma mark - Hidden init
- (id)initWithData:(NSData *)data
{
    // Set _data
}
@end
4

3 回答 3

2

如果您自己实现 getter 和 setter,则不会合成实例变量。

于 2013-11-07T11:54:01.357 回答
0

正如其他人所说 - 如果您覆盖 setter 和 getter - 编译器不会做任何其他事情。所以你想要的..就是你输入的。

于 2013-11-07T11:56:56.607 回答
0

如果你不想创建只创建实例变量。

@interface MyObject : NSObjet
 {
 NSArray *values;
}
@end
于 2013-11-07T12:01:39.173 回答