我已经阅读了ios sdk上有关多线程的一些内容,但我仍然没有找到问题的答案: 在主线程中我有一个属性,程序在一个线程中执行一些操作,其中属性的值被更改,另一个线程需要更改的值。 那么如何在一个线程中更改属性或字段的值,以便它对所有线程都会改变?
答案 0 :(得分:3)
更改单个对象的属性基本上会更改“所有线程”的值。除非您自己创建对象,否则没有特定于线程的对象副本。
对于多线程程序,主要的挑战是确保两个线程不会同时尝试访问/写入相同的内存(属性,在您的情况下)。对您的财产执行此操作的最简单方法(但不一定是最有效或最简单的方法)是从您的财产声明中排除“非原子”属性。
(编辑:这假设您使用@synthesize
来实现您的属性,而不是@dynamic
也没有自定义覆盖的getter或setter。)
多线程是一个很大的主题,但是Apple的文档是开始获取更多信息的好地方:http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Multithreading/Introduction/Introduction.html