Objective-C属性和实例变量

时间:2013-11-07 11:51:59

标签: ios iphone objective-c

问题

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

@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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

如果您不想创建仅创建实例变量。

@interface MyObject : NSObjet
 {
 NSArray *values;
}
@end