0

我定义了一种方法,其声明如下所示:

- (BOOL) loadMesh: (Mesh *)mesh fromFile: (NSString *)fileName;

我打算从给定文件中加载一个网格对象,因此指针“网格”用作输出参数。但是“mesh”总是“nil”,尽管在方法内部它不是“nil”。我认为这是因为ARC在离开方法时释放了“mesh”指向的内存。

除了使用 Mesh* 作为方法的返回值之外,还有其他方法可以解决这个问题吗?

4

1 回答 1

1

我假设Mesh作为一个类,mesh一个对象也是,对吧?你正试图这样设置它:

- (BOOL)loadMesh:(Mesh *)mesh fromFile:(NSString *)fileName
{
    mesh = // some code
    return YES;
}

Mesh *m = nil;
[self loadMesh:m fromFile:@"foo"];

但是,mesh作为函数参数,对于函数来说是本地的,并且在其范围之外是不可见的。您必须使用指向它的指针并通过指针设置它,如下所示:

- (BOOL)loadMesh:(Mesh **)mesh fromFile:(NSString *)fileName
{
    *mesh = theMesh;
    return YES;
}

Mesh *m = nil;
[self loadMesh:&m fromFile:@"foo"];
于 2013-06-11T08:58:10.887 回答