objective-c – Cocoa NSArrayNSSet:-makeObjectsPerformSelector:与快速枚举

objective-c – Cocoa NSArrayNSSet:-makeObjectsPerformSelector:与快速枚举,第1张

概述我想对存储在NSSet中的几个对象执行相同的 *** 作. 我的第一个尝试是使用快速枚举: for (id item in mySetOfObjects) [item action]; 它的工作相当不错.然后我想到: [mySetOfObjects makeObjectsPerformSelector:@selector(action)]; 现在,我不知道最好的选择是什么.据我所知,这两个解决方案 我想对存储在NSSet中的几个对象执行相同的 *** 作.

我的第一个尝试是使用快速枚举:

for (ID item in mySetofObjects)    [item action];

它的工作相当不错.然后我想到:

[mySetofObjects makeObjectsPerformSelector:@selector(action)];

现在,我不知道最好的选择是什么.据我所知,这两个解决方案是等效的.但是有一些偏爱一个解决方案的争论呢?

解决方法 我会争辩使用makeObjectsPerformSelector,因为它允许NSSet对象来处理自己的索引,循环和消息分派.编写NSSet代码的人最有可能知道实现该特定循环的最佳方式.

最糟糕的是,它们将简单地实现完全相同的循环,所有您获得的是更为清晰的代码(不需要包围循环).最好的是,他们做了一些内部优化,代码实际运行得更快.

Apple的Code Speed Performance文档中的“展开循环”部分简要介绍了该主题.

如果你关心性能,最好的做法是设置一个快速程序,在一组中的对象上执行一些选择器.有几百万次的时间,两个不同的情况之间的时间差.

总结

以上是内存溢出为你收集整理的objective-c – Cocoa NSArray / NSSet:-makeObjectsPerformSelector:与快速枚举全部内容,希望文章能够帮你解决objective-c – Cocoa NSArray / NSSet:-makeObjectsPerformSelector:与快速枚举所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1029093.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-23
下一篇2022-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存