【iOS开发】数组的线程安全

参考文章:
关于数组线程安全问题
ios多线程同时访问数组问题
Cocoa中的线程安全类

参考上面的文章,基本上有2种方法来保证数组的线程安全。

1、在使用数组的地方都进行copy操作。未经过验证。

NSArray *arr = [NSArray arrayWithArray:A];

2、封装一个Bean来把线程安全的相关代码进行封装。

这里又可以分成两种方案

1)通过继承NSMutableArray 来实现

优点:
1、只要实现其primitive method,有些方法可以省略。
2、可以使用[]来访问元素

缺点:NSMutableArray 继承时必须要实现其primitive method,如果未实现,则会造成程序崩溃。但是由于继承的关系,即使未实现其primative method,在使用时编译器仍然会提示。如果不知道NSMutableArray的这一属性,很容易造成崩溃。

2)通过一个继承于NSObject 的类,把NSMutableArray 做为此类的一个属性,所有的操作都针对此NSMutableArray来进行,并进行线程保护。

优点:
1、因为NSMutableArray 继承时必须要实现其primative method,如果未实现,则会造成程序崩溃。但是由于继承的关系,即使未实现其primative method,在使用时编译器仍然会提示。如果不知道NSMutableArray的这一属性,很容易造成崩溃。
缺点:
1、不能使用下标来访问元素

结论:我觉得最好的方法还是使用继承于NSObject的类,虽然访问元素的方法麻烦一点,但是更安全,可控性更高,不容易出现问题。

你可能感兴趣的:(【iOS开发】数组的线程安全)