新しい Objective-C コンパイラを使用すると、プロパティを合成する必要がなくなることがわかりました。2 つのクラスを含む 1 つのファイルがあります。単純なヘルパー クラスの .h は次のようになります。
@interface ViewFrameModel : NSObject
@property (nonatomic, strong) UIView *view;
@property (nonatomic, assign) CGRect frame;
- (id)initWithView:(UIView *)view frame:(CGRect)frame;
@end
私の他のクラス (クラス 2) の同じ .h ファイルには、次のものがあります。
@property (nonatomic, strong) ViewFrameModel *viewFrameModel;
クラス 2.m では、次のことができます。
- (void)setViewFrameModel:(ViewFrameModel *)viewFrameModel {
_viewFrameModel = viewFrameModel;
[self pushViewFrameModel:viewFrameModel];
}
これは、コンパイラからの苦情なしで正常に動作しますが、これを追加すると:
- (ViewFrameModel *)viewFrameModel {
return _viewFrameModel;
}
最初の方法に 1 つずつ、2 つの苦情がありますsetViewFrameModel
。
"宣言されていない識別子 _viewFrameModel の使用、viewFrameModel のことですか"
そしてもう一方は戻り_viewFrameModel
ます:
「宣言されていない識別子 _viewFrameModel の使用、viewFrameModel のことですか」 「囲んでいるコンテキストで宣言されたローカル変数 viewFrameModel への参照」
を追加するとこれらのエラーが発生するのはなぜですか
- (ViewFrameModel *)viewFrameModel {
return _viewFrameModel;
}
方法?このメソッドをいくつかのカスタム情報でオーバーライドしたいのですが、それは私に不平を言っています:-. 考え?ティア。