zne*_*eak 3 objective-c objective-c-runtime selector
在Objective-C中,至少有两种方法可以获得(或创建?因此问题)一个选择器:@selector(foo:bar:)
,或NSSelectorFromString(@"foo:bar:")
.但是选择器的生命周期是多少?
由于选择器(至少)知道它们的名称,因此它们不太可能是可以在程序周围移动的固定大小的可复制值.这意味着有人需要分配并可能解除分配它们.来自Cocoa框架的大多数对象都具有retain-release语义,这使得它们的所有权显而易见并且相对容易跟踪.但是,我认为没有明确的选择权所有权概念.
我希望使用第一种语法获得的选择器在程序的整个生命周期中都是全局的(比如文字字符串),但是另一种呢?如果我创建/获取选择器NSSelectorFromString(@"foo:bar:")
,它是否也适用于我的程序的整个生命周期?
这是"得到",而不是"创造".这两个都只是检索选择器,它由运行时系统创建和拥有.因此,SEL
他的一生是不朽的.
如果您想自己创建一个选择器,则需要使用运行时函数sel_registerName()
.NSSelectorFromString()
如果您向运行时传递一个尚未知的名称,则使用此函数.
归档时间: |
|
查看次数: |
118 次 |
最近记录: |