我正在尝试初始化一个框架。这是代码。我不明白为什么我从Xcode获得消息Undeclared identifier _frame
。它位于.h文件中,我在其实现中使用其名称调用它。我哪里错了?
#import <UIKit/UIKit.h>
@interface BNRHypnosisView : UIView
@property (nonatomic) CGRect _frame;
@end
#import "BNRHypnosisView.h"
@implementation BNRHypnosisView
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
_frame = frame;
}
return self;
}
@end
答案 0 :(得分:4)
当您声明一个名为_frame
的属性(一个下划线)时,Objective-C会合成一个getter,一个setter和一个名为__frame
的实例变量(两个下划线)。将您的作业更改为使用self._frame
通过设置器访问该属性,或使用__frame
直接访问该变量:
if (self) {
__frame = frame;
}
更好的是,将属性重命名为没有下划线的内容,以与Apple建议命名属性的方式保持一致。
答案 1 :(得分:2)
首先,不要声明您的类已经存在的变量。
第二件事。为什么你拿着框架?您的BNRHypnosisView
是UIView
的子类,已经有了
@property(nonatomic) CGRect frame;
物业,你可以随时访问它!
答案 2 :(得分:-1)
将您的declearation更改为..
@property (nonatomic) CGRect frame;
希望它能解决您的问题。之所以发生这种情况是因为前一个创建了一个名为__frame
的实例变量,其中包含2个下划线。