在目标C/Iphone开发中使用Perform Selector有什么用处

har*_*nan 3 iphone cocoa-touch objective-c ios performselector

目标C中执行选择器的用途是什么?你可以告诉我执行选择器和响应选择器之间的区别吗?

Chr*_*orr 5

-respondsToSelector:允许您测试某个对象是否响应给定的选择器,如果您仍然向其发送消息,您的应用程序是否会崩溃.


-performSelector :( withObject :)只是调用某种方法,例如

[object performSelector:@selector(retain)];
Run Code Online (Sandbox Code Playgroud)

等于

[object retain];
Run Code Online (Sandbox Code Playgroud)

你为什么需要那个?一个方便的例子是NSArray:它允许选择器由它包含的所有对象执行,例如

[self.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
Run Code Online (Sandbox Code Playgroud)

等于

for (UIView *view in self.subviews)
{
    [view removeFromSuperview];
}
Run Code Online (Sandbox Code Playgroud)

-makeObjectsPerformSelector:更优雅的方式.