我现在知道新的Objective-C编译器使您不再需要合成属性。我有一个文件,其中有两个类。我的.h用于简单的帮助程序类,如下所示:

@interface ViewFrameModel : NSObject

@property (nonatomic, strong) UIView *view;
@property (nonatomic, assign) CGRect frame;

- (id)initWithView:(UIView *)view frame:(CGRect)frame;

@end

在同一个.h文件中,对于我的其他类(class)(类(class)2),我有:
@property (nonatomic, strong) ViewFrameModel *viewFrameModel;

在2.m类中,我可以这样做:
- (void)setViewFrameModel:(ViewFrameModel *)viewFrameModel {
    _viewFrameModel = viewFrameModel;
    [self pushViewFrameModel:viewFrameModel];
}

当我添加以下代码时,此方法工作正常,编译器无任何投诉:
- (ViewFrameModel *)viewFrameModel {
    return _viewFrameModel;
}

我收到两个投诉,第一个方法是setViewFrameModel:



另一个返回_viewFrameModel:



当我添加
- (ViewFrameModel *)viewFrameModel {
    return _viewFrameModel;
}

方法?我想用一些自定义信息覆盖此方法,但它在向我提示:-。有什么想法吗? TIA。

最佳答案

如果同时覆盖了setter和getter,则编译器将不再为您自动创建实例变量。您可以像这样将其添加到您的类实现中:

@implementation ClassName {
    ViewFrameModel *_viewFrameModel;
}
...
@end

关于objective-c - 当我在Modern Objective-C中重写setter和getter时,访问生成的ivars时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14223137/

10-14 22:41
查看更多