NSMutableArray 和同步
NSMutableArray and synchronization
我正在像队列一样使用 NSMutableArray。
想象一下这个应用程序就像 Tinder,当一堆卡片低于某个数字时,我会获取新数据。获取数据时,它们被添加到 NSMutableArray 的末尾。滑动时,我删除了 fron 对象。
我应该同步这些操作吗?
这是示例代码:
//.. fetching from ParseAPI
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error) {
//....get object
[_cards addObject:object];
}
和滑动的委托方法。
- (MyCustomView *)popViewWithFrame:(CGRect)frame {
...
[self.cards removeObjectAtIndex:0];
}
由于入队总是在最后发生,而出队在前面,我是否应该在这些访问之间提供任何锁或同步?
如果是,我应该怎么做?
我想我应该在一些用于调试的 NSLog 上提供一些同步。
All Parse completion blocks should execute on the main thread.
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
// main thread here
}];
所以完成块是在主线程上执行的,这意味着你不需要任何同步。
如果您在一个线程上修改 NSArray 并从另一个线程访问或修改 NSArray,则访问必须同步。如果您在主线程或同一个串行队列上访问和修改它,没有问题。
我正在像队列一样使用 NSMutableArray。
想象一下这个应用程序就像 Tinder,当一堆卡片低于某个数字时,我会获取新数据。获取数据时,它们被添加到 NSMutableArray 的末尾。滑动时,我删除了 fron 对象。
我应该同步这些操作吗?
这是示例代码:
//.. fetching from ParseAPI
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error) {
//....get object
[_cards addObject:object];
}
和滑动的委托方法。
- (MyCustomView *)popViewWithFrame:(CGRect)frame {
...
[self.cards removeObjectAtIndex:0];
}
由于入队总是在最后发生,而出队在前面,我是否应该在这些访问之间提供任何锁或同步?
如果是,我应该怎么做?
我想我应该在一些用于调试的 NSLog 上提供一些同步。
All Parse completion blocks should execute on the main thread.
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
// main thread here
}];
所以完成块是在主线程上执行的,这意味着你不需要任何同步。
如果您在一个线程上修改 NSArray 并从另一个线程访问或修改 NSArray,则访问必须同步。如果您在主线程或同一个串行队列上访问和修改它,没有问题。