我正在尝试初始化一个框架。这是代码。我不明白为什么我从 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
Run Code Online (Sandbox Code Playgroud)
当您声明一个名为_frame(一个下划线)的属性时,Objective-C 会合成一个 getter、一个 setter 和一个名为__frame(两个下划线)的实例变量。将您的赋值更改为用于self._frame通过 setter 访问属性,或用于__frame直接访问变量:
if (self) {
__frame = frame;
}
Run Code Online (Sandbox Code Playgroud)
更好的是,将属性重命名为不带下划线的名称,以与 Apple 推荐的属性命名方式保持一致。
| 归档时间: |
|
| 查看次数: |
484 次 |
| 最近记录: |