调用performSelector: 需要注意的地方

我们在调用performSelector:的时候要注意几点:

对super 调用performSelector:

前面虽然提到,对一个对象直接调用某个method,或是透过performSelector:调用,意义是一样的,但如果是对super调用,却有不一样的结果。如果是:

[super doSomthing];

代表的是呼叫super 的doSomthing 实作。但如果是:

[super performSelector:@selector(doSomething)];

调用的是super的performSelector:,最后结果仍然等同于[self doSomething]

Refactor 工具

随着项目的发展,我们可能后来觉得当初某个method的命名并不恰当,所以想要换个名字,这时候与其使用查找/替换功能,不如直接使用Xcode 提供的Refactoring 工具:在想要改名字的method上面点选滑鼠右键,就会出现选单,然后从「Refactor」中选择「Rename」。

执行之后,Xcode除了把这个method的名字换掉,也会同时更新所有项目中呼叫这个method的代码,但,如果我们当初是用performSelector:呼叫要执行的method,Xcode并不会把里头的selector也换掉,只会出现简短的警告讯息而已,如果我们忽略了这些警告,之后执行的时候,就会出现找不到selector的错误。我们需要格外小心。

results matching ""

    No results matching ""