我在我的app中使用了一个名为retrieveArray的单例变量。
@interface Shared : NSObject {
NSMutableArray *books;
}
@property (nonatomic, retain) NSMutableArray *books;
+ (id)sharedManager;
@end
使用多个.m文件访问 NSMutableArray * retrieveArray; ...在头文件中
retrievedArray = [[Shared sharedManager] books];
我的问题是如何确保retrieveArray中的值在所有类中保持同步。
请告诉我这样做的确切代码,因为我从未处理过此类案件。
**我在我的应用程序中使用NSThread。
答案 0 :(得分:2)
Mike Ash写了一篇关于care and feeding of Singletons
的例子答案 1 :(得分:1)
retrievedArray = [[Shared sharedManager] books];
我的问题是如何确保这一点 retrieveArray中的值 在所有人之间保持同步 类。
目前尚不清楚你在问什么。无论你调用books
方法多少次,它总会返回对同一个对象的引用;相同的数组(假设您的单例正确实现)。
即。这样:
NSMutableArray *books1 = [[Shared sharedManager] books];
NSMutableArray *books2 = [[Shared sharedManager] books];
NSMutableArray *books3 = [[Shared sharedManager] books];
NSMutableArray *books4 = [[Shared sharedManager] books];
生成4个变量,这些变量都引用同一个对象。如果您说[books1 addObject: aBook];
,则与说[books2 addObject: aBook];
等完全相同......
更大的问题是其中一个线程;如果您正在考虑在不同的线程或队列中对books数组进行不同的引用,那么您的同步问题就在于NSMutableArray
不是线程安全的。
答案 2 :(得分:0)
只要您确保Shared
始终使用books
的相同实例(这是,它的值被分配一次并且永远不会被另一个实例替换)一切都很好。如果修改了mutable数组的内容,每个人都会注意到,因为所有内容都引用了同一个实例。