0

我在ios sdk上阅读了一些关于多线程的东西,但我仍然没有找到问题的答案:在主线程中我有一个属性,程序在一个线程中做了一些事情,其中​​属性的值被改变了,另一个线程需要改变的值。那么如何在一个线程中更改属性或字段的值,以便所有线程都更改?

4

1 回答 1

3

更改单个对象的属性基本上会更改“所有线程”的值。除非您自己制作对象,否则没有特定于线程的对象副本。

对于多线程程序,主要挑战是确保两个线程不会同时尝试访问/写入相同的内存(在您的情况下是属性)。为您的财产执行此操作的最简单方法(但不一定是最有效或万无一失的方法)是从您的财产声明中排除“非原子”属性。(编辑:这假设您正在使用@synthesize来实现您的属性,并且没有@dynamic自定义覆盖 getter 或 setter。)

多线程是一个有点大的话题,但 Apple 的文档是了解更多信息的好地方:http: //developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Multithreading/简介/Introduction.html

于 2012-04-11T22:55:28.707 回答