使用NSOperationQueue(iPhone)时模型类中的非原子属性?

时间:2010-06-04 22:58:22

标签: iphone objective-c properties nsoperation

我有一个带有NSMutableData ivar的自定义模型类,它将由自定义NSOperation子类访问(使用N​​SOperationQueue)。我想通过使用依赖关系,我可以保证从多个NSOperations对ivar进行线程安全访问,我可以保证我不会通过等待Q完成所有操作来从其他代码(比如我的主应用程序线程)访问ivar

我应该使用非原子属性规范,还是保持原子?是否会对绩效产生重大影响?

3 个答案:

答案 0 :(得分:1)

安德鲁,这是否重要取决于你在做什么。如果您的操作正在向youtube上传电影,并且每个操作都需要读取一次数据,那么它就不会产生任何影响 - 只需将其保留为原子。

否则,您需要进行分析以查看其是否重要。如果您确定(您听起来不确定)NSMutableData永远不会同时从两个或多个线程访问(无论您是这样做,锁定,障碍还是等待),那么您就不需要它了是原子的。

答案 1 :(得分:0)

过早优化是万恶之源。

保持原子性,直到您确定存在性能问题为止。

答案 2 :(得分:0)

如果它是一个可变对象,那么你最大的敌人就是并发突变,而不是不一致的属性访问。