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