我在对Overhead of NSNotifications这个帖子的评论中注意到,用户JustSid说
如果应用程序在每个运行循环周期内未发送30+,则开销不会很明显
我想编写一个小的帮助程序类,以跟踪在当前运行循环周期中已发送了多少NSNotification,并在其超出某个可预配置的数目时提醒我。我知道我可以注册所有通知(将nil传递给名称和对象),但是如何跟踪它们从哪个运行循环发送?
最佳答案
在NSNotificationCenter上创建一个类别可以很容易,该类别在添加通知观察者时会递增一些内部整数(因此在删除通知时会递减),但是您必须问自己:多少钱太多了?
如果您认为它是任意整数(例如,假设为30),那么在具有更多内存和处理器约束的设备上进行测试时会发生什么?如果您在可以轻松处理30位观察者和通知的设备上进行测试,那会发生什么情况?尽管可以编写通用规则,但不可能评估每种情况下通知对应用程序响应时间的影响。
另一种可能是,当大量的观察者将某些系统功能带入爬网时,让后台进程查询通知堆栈(或以某种方式像上面那样内部对其进行衡量)。当然,如果不考虑这是太多工作的事实,那么您将设计一个子系统,该子系统可能首先使用要对其进行补救的方法,因此会占用尽可能多的内存,并从性能中窃取了很多东西!
TL; DR您可以使用许多其他模式和结构来代替通知,那么为什么您要满足NSNotification的需求呢?
关于ios - 监视NSNotifications,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15210898/