我已经阅读了关于多线程的ios sdk的一些东西,但我仍然没有找到问题的答案: 在主线程中我有一个属性,程序在线程中做了一些东西,其中属性的值被更改,另一个线程需要更改的值。 那么如何在一个线程中更改属性或字段的值,以便它可以针对所有线程进行更改?属性/字段线程同步
0
A
回答
3
更改单个对象上的属性基本上会更改“针对所有线程”的值。没有线程特定的对象副本,除非你自己创建它们。
对于多线程程序,主要的挑战是确保两个线程不会尝试同时访问/写入相同的内存(在您的情况下属性)。为您的财产提供最简单的方法(但不一定是最有效或最简单的方法)是从您的财产声明中排除“nonatomic”属性。 (编辑:这里假设你正在使用@synthesize
来实现你的属性,而不是@dynamic
也没有定制覆盖getter和setter方法)
多线程是有点大的话题在这里介绍,但苹果的文档一个好地方开始更多的信息:http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Multithreading/Introduction/Introduction.html
相关问题
- 1. 同步访问非易失性字段线程安全吗?
- 2. 线程/同步
- 3. 线程同步
- 4. 线程同步
- 5. 线程同步
- 6. 线程同步
- 7. 线程同步
- 8. 线程同步
- 9. 线程同步
- 10. 跨线程同步属性的最佳方法
- 11. Java线程可视性和同步
- 12. 多线程同步
- 13. 线程和同步
- 14. Java同步线程
- 15. 线程和同步
- 16. 线程同步:C
- 17. 线程vs同步
- 18. iphone线程同步
- 19. Boost线程同步
- 20. 线程:同步块
- 21. 跨线程同步
- 22. GraphStream线程同步
- 23. C++:线程同步
- 24. C#线程同步
- 25. Java线程同步
- 26. Python线程同步
- 27. .NET线程同步
- 28. CUDA:同步线程
- 29. Java线程“同步”
- 30. c#线程同步
不是最简单的方法是锁? – CodaFi 2012-04-11 23:00:27
由于在属性声明中没有指定“nonatomic”,编译器会在后台放置锁码。这假设你是'@综合'他们虽然。编辑答案澄清这一点。 – MechEthan 2012-04-11 23:08:16
是的,但我没有在属性声明中包含“nonatomic”属性。尽管只在一个线程中更改了值,但是并未在主线程中或在我需要的值中更改值。 – Alexander 2012-04-12 14:23:12