在我的.h界面中:
@property (nonatomic, strong) UIView *myView;
在我的.m中:
- (void)setMyView:(UIView *)aView {
_myView = aView; //Use of undeclared identifier "_myView"
}
为什么会出错?
最佳答案
我猜想,除了您的显式“setter”方法之外,您还为myView
属性编写了自己的显式“getter”方法。
当您同时为属性提供“setter”和“getter”方法时,编译器不会自动为您生成一个ivar。这很有道理,因为您的属性实现有可能没有使用ivar。
在这种情况下,您必须声明自己的ivar。只需在.m中执行此操作:
@implementation MyClass {
UIView *_myView;
}
这样,您可以在“setter”和“getter”方法中引用
_myView
ivar。另一种可能性是,该属性是在父类中声明的,并且您将覆盖该属性的“setter”方法。在这种情况下,您无权访问ivar。您需要这样做:
- (void)setMyView:(UIView *)aView {
[super setMyView:aView];
// do other stuff here
}
关于ios - 简单的Objective-C属性设置错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16429679/