- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我使用一个时,内存/处理的用途是什么:
[[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 多个字节等。
addObserver
Và removeObserver
大致相当于在 NSMutableArray
中添加或删除条目的成本(特别是,removeObserver
是在中心注册的观察总数的 O(n))。在中心注册的观察总数上发布通知的时间复杂度为 O(n)。 (同样,这是基于逆向工程;它可能会随着时间的推移而改变,但我对此深表怀疑。我确信现在这是非常稳定的代码。)
这意味着 NSNotification
不能很好地扩展到数千个观察值。这并不是建议您“出于性能原因避免使用 NSNotification
”。 (我讨厌人们在没有实际验证他们的情况的情况下说这样的话。)这只是意味着您需要在系统中创建数百或数千个通知之前考虑周到。这就是 KVO 专门为此设计的。
对于您的特定示例,这正是 NSNotification
的设计目的,因此您应该使用它。
关于ios - NSNotificationCenter 使用了多少内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26280949/
Làm thế nào để thiết bị IO biết giá trị trong bộ nhớ thuộc về nó đã thay đổi trong bộ nhớ được ánh xạ IO? ? Ví dụ, giả sử địa chỉ bộ nhớ 0 được dành riêng để lưu trữ màu nền cho thiết bị VGA. Khi chúng ta thay đổi giá trị trong bộ nhớ [0], VGA
Hiện tại tôi đang phát triển một ứng dụng iOS sử dụng SDK Facebook để đăng nhập (thông qua FBLoginView). Mọi thứ đều hoạt động tốt, ngoại trừ những người sử dụng phiên bản Facebook cũ. Khi họ nhấn nút "Đăng nhập bằng Facebook", anh ấy
Giả sử tôi có: đây - là một - ví dụ - với một số - dấu gạch ngang NSRange sẽ chọn trường hợp đầu tiên của "-" bằng cách sử dụng `rangeOfString:@"-", nhưng nếu tôi chỉ muốn trường hợp cuối cùng
SDK Card.io cung cấp các thông tin chi tiết sau: Số thẻ, Ngày hết hạn, Tháng, Năm, CVV và Mã bưu chính. Làm thế nào để lấy tên quốc gia từ SDK này. - (void)userDidProvideCreditCardInfo:(Xe hơi
Ứng dụng iOS tải xuống hình ảnh từ dịch vụ web và cài đặt chúng vào thiết bị iOS của người dùng trong quá trình cài đặt như thế nào? Có thể được không? Câu trả lời hay nhất Bạn không kiểm soát được việc cài đặt ứng dụng của mình trên thiết bị của người dùng, do đó bạn không thể tải xuống dữ liệu bổ sung trong quá trình cài đặt. Chỉ cần khởi động ứng dụng lần đầu tiên sau khi cài đặt
Tôi đã từng phát triển một sản phẩm iOS dành cho doanh nghiệp mà công ty tôi bán cho các doanh nghiệp lớn để nhân viên của họ sử dụng. Ứng dụng được cung cấp thông qua AppStore và người dùng doanh nghiệp được cung cấp hồ sơ cung cấp dành riêng cho công ty (có chứa hồ sơ cung cấp ứng dụng) để kích hoạt các ứng dụng mà họ được phép sử dụng.
Tôi đang cố gắng tích hợp Card.io SDK vào ứng dụng iOS của mình. Tôi muốn thực hiện một bản địa hóa đơn giản cho giao diện người dùng CardIO, như thay đổi tiêu đề nút hủy hoặc văn bản gợi ý "Đặt trước thẻ tín dụng của bạn tại đây". Tôi tìm thấy cái này trên github
Tôi đang sử dụng các lớp CardIOView và CardIOViewDelegate và không có BOOL nào có thể được đặt thành YES để quét collectCardholderName. Tôi có thể thấy nó trong CardIOP
Tôi có một ứng dụng VoIP được tích hợp bộ công cụ gọi điện. Mỗi lần tôi gọi từ ứng dụng VoIP, một bản ghi cuộc gọi gần đây mới sẽ được tạo trong ứng dụng điện thoại gốc. Tôi cũng có danh bạ tùy chỉnh trong ứng dụng voip của mình (ứng dụng điện thoại
Làm sao ứng dụng iOS biết được đã có bàn phím trên màn hình khi ứng dụng mở ra? Khi ứng dụng đang chạy, nó có thể nhận được thông báo hiện/ẩn bàn phím. Tuy nhiên, nếu ứng dụng được mở như một ứng dụng phụ ở chế độ chia đôi màn hình và ứng dụng chính đã hiển thị bàn phím, thì ứng dụng phụ không
Tôi nhận được lỗi sau trong trình mô phỏng: ImageIO: CGImageReadSessionGetCachedImageBlockData *** CGImageReadSessionGetCachedIm
Như được trình bày trong tài liệu của Apple, có thể giao tiếp với các phụ kiện được chứng nhận (do Apple chứng nhận) thông qua EAAccessory Framework. Nhưng tôi hơi bối rối vì một số bài đăng nói với tôi rằng nó cũng có thể được thực hiện thông qua CoreBluetoo
Mặc dù trình gỡ lỗi hiện nay khá tốt, nhưng đôi khi cách tốt nhất để tìm hiểu những gì đang diễn ra trong ứng dụng của bạn vẫn là sử dụng NSLog. Thật dễ dàng để thực hiện việc này khi bạn kết nối với máy tính; Xcode sẽ hữu ích khi hiển thị bảng xem nhật ký và bạn chỉ cần làm theo hướng dẫn. Khi bạn không làm việc
Trong ứng dụng iOS của mình, tôi đã xác định một số điểm quan tâm. Một số trong số chúng có tên Beacon Kontakt.io được liên kết với một PoI cụ thể (ý tôi là tên thường được gắn vào nhãn beacon). Bây giờ tôi muốn tìm đèn hiệu ở gần đó.
Tôi đang tạo một plugin trigger.io cho thông báo cảnh báo. Thử trả về dữ liệu từ lời nhắc cảnh báo. Đây là mã của tôi: // Prompt + (void)show_prompt:(ForgeTask*)task{
Xin chào, tôi mới sử dụng Apple iOS. Tôi đã đọc và tìm kiếm rất nhiều bài viết về thông báo đẩy nhưng không tìm thấy thông tin nào về bản cập nhật mới của APNS từ io4 lên ios 6. Có ai có thể cung cấp cho tôi cách sử dụng APNS trong ios không?
Chiều cao của UITabBar có vẻ đã thay đổi giữa iOS 7 và 8/9/10/11. Tôi đăng câu hỏi này để mọi người có thể dễ dàng tìm thấy câu trả lời. Trước đây: iOS 8/9/10/11 trên iPhone và iPad
Tôi đoán tôi có thể sử dụng nhiều Storyboard khác nhau cho các phiên bản iOS khác nhau. Do sự khác biệt trong UI, tôi sẽ tạo các Storyboard sau: Main_iPhone.storyboard Main_iPad.storyboard
Tôi đang viết một thứ mà tôi sẽ chồng một sự kết hợp của 2 video với một phần các bản âm thanh từ thư viện iTunes của thiết bị, như thế này: AVMutableComposition* mixComposition = [[AVMutableC
Tôi đã tạo một ứng dụng iOS đơn giản có thể biên dịch và chạy tốt trên trình mô phỏng iPad. Chương trình tương tự không biên dịch được khi tôi yêu cầu XCode 4 sử dụng thiết bị iPad đã kết nối của tôi. Vấn đề có vẻ như là khi tôi cố gắng sử dụng một chiếc iPad được kết nối
Tôi là một lập trình viên xuất sắc, rất giỏi!