在 Objective-C 中,至少有两种方法可以获取(或创建?因此是问题)选择器:@selector(foo:bar:)
或NSSelectorFromString(@"foo:bar:")
. 但是选择器的生命周期是多少?
由于选择器(至少)知道它们的名字,它们不太可能是固定大小的可复制值,可以在程序中随机播放。这意味着有人需要分配并可能取消分配它们。Cocoa 框架中的大多数对象都具有保留-释放语义,这使得它们的所有权明确并且相对容易跟踪。但是,我没有看到选择器所有权的明确概念。
我希望使用第一种语法获得的选择器在程序的整个生命周期中都作为全局变量存在(如文字字符串),但是另一个呢?如果我创建/获取一个选择器NSSelectorFromString(@"foo:bar:")
,它在我的程序的整个生命周期中也有效吗?