iOS -- "add"方法出现在 codeSense 中的自动合成属性

标签 ios xcode properties automatic-properties

我刚刚创建了一个具有以下属性的 iOS 类:

@property (nonatomic, strong) NSString* foo;
@property (nonatomic, strong) NSObject* bar;
@property (nonatomic) CGRect fubar;

我没有为这些属性输入任何@synthesize 或明确的ivars。然后我进入实现文件并开始创建一个方法,如下所示:

-(void) add

我将光标留在“添加”一词的末尾。然后在代码意义上弹出以下方法名称:

addBar: (NSSet*) objects
addBarObject: (objectType *) object
addFoo: (NSSet*) objects
addFooObject: (objectType *) object
addFubar: (NSSet*) objects
addFubarObject: (objectType *) object

这些方法是什么?有他们的文档吗?

最佳答案

这是一个类可以实现的访问器方法,以支持可变的对多关系的键值编码, 见Mutable Unordered Accessors在《Key-Value Coding Programming Guide》中:

In order to be key-value coding complaint for a mutable unordered to-many relationship you must implement the following methods:

-add<Key>Object: or -add<Key>:. At least one of these methods must be implemented. These are analogous to the NSMutableSet method addObject:.

对于其他键值编码访问器方法,也会发生同样的“奇怪”自动完成, 例如:

- (void)remove...
- (void)intersect...
- (NSUInteger)countOf...

关于iOS -- "add"方法出现在 codeSense 中的自动合成属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15327444/

相关文章:

iphone - 错误 - 服务无效。请检查您的设置并重试。 (0xE8000022)

objective-c - 从另一个类调用 float 组

ios - 从 TableView 中选择时在多个详细 View 之间切换

objective-c - UITableViewCell : How to tell which indexPath was selected? 中的两个按钮

java - 我想在运行时在 java 中更改属性名称

Maven 动态更改属性(运行时)

java - 属性文件反斜杠和分号

ios - 如何在 iOS 中对图像的白色背景进行着色

ios - iPad 第三代无法显示视网膜图像

ios - 为 Xcode 4 创建跨项目引用时遇到问题