gpt4 book ai didi

objective-c - Cocoa @selector 用法详解

转载 作者:太空狗 更新时间:2023-10-30 03:11:27 26 4
gpt4 key购买 nike

我是 Cocoa/Cocoa Touch 的新手,正在阅读一本开发书籍。我遇到过使用 @selector() 运算符的情况。我对如何以及何时使用 @selector() 运算符有点迷茫。有人可以提供简短而贴心的解释和示例,说明为什么使用它以及它给开发人员带来的好处吗?

顺便说一下,这里是从使用@selector() 的 Apple iPhone 开发站点获取的示例代码

if ([elementName isEqualToString:@"entry"])
{

parsedEarthquakesCounter++;

// An entry in the RSS feed represents an earthquake, so create an instance of it.
self.currentEarthquakeObject = [[Earthquake alloc] init];
// Add the new Earthquake object to the application's array of earthquakes.
[(id)[[UIApplication sharedApplication] delegate]
performSelectorOnMainThread:@selector(addToEarthquakeList:)
withObject:self.currentEarthquakeObject waitUntilDone:YES];
return;
}

最佳答案

选择器运算符提供了一种引用对象提供的方法的方式,有点类似于C中的函数指针。它很有用,因为它可以让你解耦调用对象方法的过程。例如,一段代码可以提供一种方法,而另一段代码可以将该方法应用于一组给定的对象。

例子:

测试一个对象是否实现了某个方法:

[object respondsToSelector:@selector(methodName)]

存储一个方法以便稍后调用对象;

SEL method = @selector(methodName);
[object performSelector:method];

在不同的线程上调用方法(对于 GUI 工作很有用)。

[object performSelectorOnMainThread:@selector(methodName)]

关于objective-c - Cocoa @selector 用法详解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/543161/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com