我现在知道新的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/