我在一些iPhone示例中看到,属性在变量前面使用了下划线.有人知道这意味着什么吗?或者它是如何工作的?

我使用的接口文件如下所示:

@interface MissionCell : UITableViewCell {
    Mission *_mission;
    UILabel *_missionName;
}

@property (nonatomic, retain) UILabel *missionName;

- (Mission *)mission;

我不确定上面所说的到底是什么,但当我try 设置任务名称时:

aMission.missionName = missionName;

我得到了一个错误:

在非 struct 或联盟中请求成员"任务名称"

推荐答案

如果对ivar使用下划线前缀(这只不过是一种常见的约定,但很有用),那么需要做一件额外的事情,以便自动生成的访问器(用于属性)知道要使用哪个ivar.具体来说,在您的实现文件中,您的synthesize应该如下所示:

@synthesize missionName = _missionName;

更一般地说,这是:

@synthesize propertyName = _ivarName;

Objective-c相关问答推荐

Objective C 中的 RSA 实现

是否可以 suppress Xcode 4 静态分析器警告?

iphone 的 UIPopoverController 不工作?

NSLocale 和国家名称

使用 UIScrollView 用两根手指滚动

iOS 指定初始化器:使用 NS_DESIGNATED_INITIALIZER

在 Objective-C 中在 iPhone 上使用 HTTP POST 和 GET 的教程

如何在 UICollectionView 中居中行?

如何连续关闭 2 个模态视图控制器?

从我在 iPhone 上的应用程序调用官方 *Settings* 应用程序

Objective-C 中的 const 与静态 NSStrings

在 NSMutableArray 的开头添加一个对象?

如何在情节提要场景中嵌入自定义视图 xib?

为什么 NSOrderedSet 不继承自 NSSet?

iOS 设备作为 Web 服务器

获取包含在 NSString 中的文件的扩展名

HTML 内容适合 UIWebview 而无需缩小

如何从设置屏幕打开位置服务屏幕?

在 UITextField 文本上投影

UIDatePicker 中的最小和最大日期