我在一篇关于Overhead of NSNotifications的评论中注意到,用户JustSid说
如果应用程序不每次运行循环发送30+,开销就不会明显
我想编写一个小助手类,它跟踪在当前运行循环循环中发送了多少个NSNotifications,并提醒我,如果它高于某个预先可配置的数字。我知道我可以注册所有通知(将0传递给name和object),但是如何跟踪它们是从哪个运行循环周期发送的呢?
发布于 2013-03-04 21:20:21
在NSNotificationCenter上有一个类别是很容易的,它在添加通知观察者时会增加一些内部整数(因此,当它被移除时会减少),但是您必须问自己:多少是太多?
如果您认为它是一个任意整数(例如,30 ),那么当您在比现在有更多内存和处理器约束的设备上测试它时会发生什么呢?如果您在一个可以轻松处理30个观察者和浮动通知的设备上测试它(这将是完全的浪费),会发生什么?虽然编写一般规则是可能的,但在每种情况下都不可能评估通知对应用程序响应时间的影响。
另一种可能是让后台进程查询通知堆栈(或者在某种程度上像上面那样在内部度量它),当观察者的数量将某些系统功能带到爬行时。当然,忽略这个事实,这是太多的工作,您将设计一个子系统,它可能会使用尽可能多的内存和盗取尽可能多的性能,因为你试图补救它在第一次!
您可以使用许多其他的模式和结构来代替通知,那么您为什么要满足NSNotification的需求呢?
https://stackoverflow.com/questions/15210898
复制相似问题