我以前从未见过这些方法,它们似乎是为类上声明的每个属性自动生成的。它们可以在@implementation的NSObject子类中完成,但我似乎不能触发它们。我可以通过将方法添加到头来手动调用它们,但是我看不到对象中的任何更改。
#import "Example.h"
@interface Example ()
@property NSString *title;
@end
@implementation Example
-(void)addTitle:(NSSet *)objects
{
NSLog(@"%s", __PRETTY_FUNCTION__);
}
-(void)addTitleObject:(NSString *)object
{
NSLog(@"%s", __PRETTY_FUNCTION__);
}
@end编辑:我在“无序设置者”部分的clang源(SemaCodeComplete.cpp)中找到了完成的来源。还有一个“无序的Getters”部分。有趣的是,还有一个自动完成的方法intersectKey:(NSSet *)objects,其中键是属性的名称。真奇怪。
发布于 2015-01-27 23:59:59
看来他们是为了支持核心数据。这文档列出了“自定义到多个关系访问器方法”下的方法。在同一文档的前面,有这样的说法:“核心数据甚至对于由NSManagedObject表示的实体也是这样做的”。这要么是一个错误,它应该说“即使对没有表示的实体”,或者在自动完成中存在一个错误,它为非NSManagedObject对象生成这些方法。
https://stackoverflow.com/questions/28181986
复制相似问题