sách gpt4 ai đã đi

ios - NSNotificationCenter 使用了多少内存

In lại 作者:行者123 更新时间:2023-12-01 17:39:24 27 4
mua khóa gpt4 Nike

当我使用一个时,内存/处理的用途是什么:

[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(dismissKeyboard) name:UIKeyboardWillHideNotification object:nil];

hoặc:

NSNotificationCenter * notificationCenter = 
[notificationCenter addObserver:self selector:@selector(dismissKeyboard) name:UIKeyboardWillHideNotification object:nil];

PS:我想将 NSNotificationCenter 用于三个不同的事情。所以我的好奇心

1 Câu trả lời

你的问题有点不清楚。如果你的意思是“调用 [NSNotificationCenter defaultCenter] 需要多少时间?”,不用担心。这是微不足道的。通常人们将 [NSNotificationCenter defaultCenter] 卸载到变量中以节省输入。我通常将变量称为 nc,因为它太长了。这个答案的其余部分与 NSNotification 性能有关,这可能不是您要问的。

Cocoa 通常不会对这些事情做出 promise 。您不能依赖实现细节,不幸的是,CFNotificationCenter 不是 Core Foundation 开源版本的一部分,因此您无法四处查看它当前是如何实现的。

但经验表明(基于我几年前必须进行的性能调整)它是作为一系列观察结果实现的。所以它存储观察者、选择器、名称和对象,这需要大约 4x(指针大小)的内存加上可能的 ObjC 结构开销。因此在 64 位平台上可能有 20 多个字节等。

addObserverremoveObserver 大致相当于在 NSMutableArray 中添加或删除条目的成本(特别是,removeObserver 是在中心注册的观察总数的 O(n))。在中心注册的观察总数上发布通知的时间复杂度为 O(n)。 (同样,这是基于逆向工程;它可能会随着时间的推移而改变,但我对此深表怀疑。我确信现在这是非常稳定的代码。)

这意味着 NSNotification 不能很好地扩展到数千个观察值。这并不是建议您“出于性能原因避免使用 NSNotification”。 (我讨厌人们在没有实际验证他们的情况的情况下说这样的话。)这只是意味着您需要在系统中创建数百或数千个通知之前考虑周到。这就是 KVO 专门为此设计的。

对于您的特定示例,这正是 NSNotification 的设计目的,因此您应该使用它。

关于ios - NSNotificationCenter 使用了多少内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26280949/

27 4 0
Bài viết được đề xuất: ios - 为什么 awakeFromNib 从 TableView 中的 Cell 调用两次?
Bài viết được đề xuất: Vim 缓冲区已修改
Bài viết được đề xuất: java检测点击的按钮
Bài viết được đề xuất: java - 如果文件名不存在,如何写入新文件并追加文件?
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com