我定义了一种方法,其声明如下所示:
- (BOOL) loadMesh: (Mesh *)mesh fromFile: (NSString *)fileName;
我打算从给定文件中加载一个网格对象,因此指针“网格”用作输出参数。但是“mesh”总是“nil”,尽管在方法内部它不是“nil”。我认为这是因为ARC在离开方法时释放了“mesh”指向的内存。
除了使用 Mesh* 作为方法的返回值之外,还有其他方法可以解决这个问题吗?
我定义了一种方法,其声明如下所示:
- (BOOL) loadMesh: (Mesh *)mesh fromFile: (NSString *)fileName;
我打算从给定文件中加载一个网格对象,因此指针“网格”用作输出参数。但是“mesh”总是“nil”,尽管在方法内部它不是“nil”。我认为这是因为ARC在离开方法时释放了“mesh”指向的内存。
除了使用 Mesh* 作为方法的返回值之外,还有其他方法可以解决这个问题吗?
我假设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"];