我是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故障中的四个结果之一。我做错了什么?
答案 0 :(得分:1)
我将每个变量设置为:
[myVector[i].a setString: vector2[i].a];
vector
是一个C ++容器,对Objective-C内存管理一无所知。 Objective-C使用引用计数的内存模型,您可以在About Memory Management中阅读。由于vector
没有遵循内存管理规则,因此只要没有其他对象保留它们,就会释放存储在vector
中的对象,即在方法结束时你解除了他们。
使用vector
或NSArray
,而不是尝试使用NSMutableArray
存储对象,这两者都可以与Objective-C对象完美配合。