如果我发布分布式NSNotification,我可以安全地释放作为“对象”属性传入的对象吗?在文档中可怕的提及,分发通知的交付“不能保证”呢?NSNotification对象是否保留其“对象”和“用户信息”属性,如果是,那么这些保留的寿命是多少?
0
A
回答
1
如果您不再需要object
或userInfo
的所有权,那么它们对于release
是安全的。如果通知观察员想要保留object
或userInfo
那么他们应该是retain
他们。
通知只发送给注册了他们在同一个线程,该通知被传递的对象。有两种方法可以避免混淆:
只发送和注册主线程通知。这并不能保证事情不会出错,但它应该减少事情出错的可能性。使用
performSelectorOnMainThread:
组方法来做到这一点。使用键值观察而不是通知。大概是因为iOS没有绑定,KVO在iOS上的用处不大。 KVO总是交付并在KVO事件引发的线程上交付。
2
它不会让我评论本笃十六世的答案,所以让我给你从NSNotification类引用一些信息:
在多线程应用程序,通知始终在线程中发送,其中通知被张贴了,这可能不是观察者注册自己的同一个线程。
换句话说,你可以在任何线程NSNotifications注册,和任何线程发送通知将线程观察者的响应。所以如果你在做UI的东西,你需要确保你在主线程上执行选择器。否则,只要您的代码是线程安全的,它并不重要。
相关问题
- 1. NSNotification是否保留该对象?
- 2. NSUndoManager是否保留对象?
- 3. 是否将autorelease对象分配给保留属性会增加其保留数?
- 4. 对象公共属性是否保留对该对象的引用?
- 5. NSArray initWithObjects:是否保留对象?
- 6. 为什么类对象的属性保留而不是复制?
- 7. 如果您有IBOutlet,但不是属性,是否保留?
- 8. Objective-C块 - 块是否保留它引用的对象?
- 9. 将保留对象分配给弱属性;对象将分配
- 10. 如果我的属性没有setter(只读),如果UIKit不是NSNumber或NSValue,那么它是否保留该值?
- 11. 保留块中的对象
- 12. 保留对象的UIViewController
- 13. 反序列化的对象是否保留静态值?
- 14. Django - 删除对象,保留父对象?
- 15. Android是否保留.apk文件?如果是这样的话?
- 16. 什么是嵌套块中保留对象的正确方法
- 17. 增加对象的保留数量是什么?
- 18. 保留分配给保留属性的分配对象的数量
- 19. 在Visual Basic中,WithEvents在更改对象的引用时是否保留其EventHandler?
- 20. 我是否需要保留自动释放对象?
- 21. iOS检查对象是否可以保留
- 22. NSThread对象保留两次?
- 23. 保留对象在objective-c
- 24. realm.io保留子对象
- 25. RestKit保留CoreData对象
- 26. 如何在分配给基础对象时保留指定的对象属性?
- 27. SWIG Java保留从C++弹起的对象的类信息
- 28. 是'长寿命'的php对象吗?
- 29. @“某些文本”是否给出自动释放或保留1个对象?
- 30. 如何重定向并保留对象的属性
“通知仅传送给在与传递通知相同的线程上为其注册的对象” - 这是不正确的。这与观察者注册的线程无关。 – 2014-07-10 14:43:29