nod*_*nja 0 cocoa cocoa-touch objective-c
假设我有一个名为foo的方法.有什么区别:
[self foo];
Run Code Online (Sandbox Code Playgroud)
和
[self performSelector:@selector(foo)];
Run Code Online (Sandbox Code Playgroud)
它们是一样的吗?第一个似乎更容易,所以为什么你想要使用第二个?
来自文档:
该
performSelector:方法相当于直接向接收器发送aSelector消息.例如,以下所有三条消息都执行相同的操作:
id myClone = [anObject copy];
id myClone = [anObject performSelector:@selector(copy)];
id myClone = [anObject performSelector:sel_getUid("copy")];
Run Code Online (Sandbox Code Playgroud)
但是,该
performSelector:方法允许您发送在运行时之前未确定的消息.变量选择器可以作为参数传递:
SEL myMethod = findTheAppropriateSelectorForTheCurrentSituation();
[anObject performSelector:myMethod];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
123 次 |
| 最近记录: |