gpt4 book ai didi

objective-c - 在现代 Objective-C 中覆盖 setter 和 getter 时访问生成的 ivar 时出错

转载 作者:IT王子 更新时间:2023-10-29 08:08:13 26 4
gpt4 key购买 nike

我现在知道新的 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 文件中,对于我的其他类(第 2 类),我有:

@property (nonatomic, strong) ViewFrameModel *viewFrameModel;

在 class 2.m 中,我可以这样做:

- (void)setViewFrameModel:(ViewFrameModel *)viewFrameModel {
_viewFrameModel = viewFrameModel;
[self pushViewFrameModel:viewFrameModel];
}

编译器没有任何提示,这工作正常,但是,当我添加这个时:

- (ViewFrameModel *)viewFrameModel {
return _viewFrameModel;
}

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

"Use of undeclared identifier _viewFrameModel, did you mean viewFrameModel"

另一个返回 _viewFrameModel:

"Use of undeclared identifier _viewFrameModel, did you mean viewFrameModel" "Reference to local variable viewFrameModel' declared in enclosing context"

为什么添加时会出现这些错误

- (ViewFrameModel *)viewFrameModel {
return _viewFrameModel;
}

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

最佳答案

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

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

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com