目标C - 对象的向量不保持方法之间的值

时间:2014-05-15 19:20:38

标签: objective-c object vector

我是Objective-C的新手,但我有C ++的背景知识。我正在研究项目的前端,我正在使用苹果的界面构建器和xcode。

我有一个向量,用于保存类vector<myClass> myVector的对象,在另一个类bigClass中。 myClass包含15个NSMutableString*个变量。我有另一个本地的向量,我在vector<myClass> vector2中声明它的方法,它执行SQL查询以获取我想要的数据。然后,我将vector2的值分配给myVector

我设置了这样的每个变量:[myVector[i].a setString: vector2[i].a];myVector在我脑海中声明如下:@property vector<myClass> myVector

我能够在方法中读取myVector中放置的值,但是当bigClass的其他方法获得类时,我只能得到前3个变量的值以及myVector中每个对象的每个对象的第五个变量的值,每次尝试获取变量的值,而该变量不是seg故障中的四个结果之一。我做错了什么?

1 个答案:

答案 0 :(得分:1)

  

我将每个变量设置为:[myVector[i].a setString: vector2[i].a];

vector是一个C ++容器,对Objective-C内存管理一无所知。 Objective-C使用引用计数的内存模型,您可以在About Memory Management中阅读。由于vector没有遵循内存管理规则,因此只要没有其他对象保留它们,就会释放存储在vector中的对象,即在方法结束时你解除了他们。

使用vectorNSArray,而不是尝试使用NSMutableArray存储对象,这两者都可以与Objective-C对象完美配合。