我正在学习 Objective-C,并且正在尝试编写一个 Vector3D 类。
在 C++ 或 Java 中,我想要实现的函数看起来像这样:
Vector3D
{
Vector3D crossProduct(Vector3D in)
{
Vector3D result;
result = ... // maths involving this classes variables and the input Vectors variables.
return result;
}
}
现在在 objective-c 中我不能返回一个对象,只能返回一个对象指针。这是使用自动释放的合适位置吗(返回之前?)。这将使我能够链接 Vector3D 类上的方法(因为许多方法返回对象本身),但是与手动分配和释放对象相比,这会不会特别低效?在 objective-c 中是否还有其他常用模式用于返回对象?
我想对类进行的操作示例:
Vector3D * vector3D1 = [[Vector3D alloc] init];
Vector3D * vector3D2 = [[Vector3D alloc] init];
Vector3D * vector3D3 = [vector3D1 cross [ [vector3D2 normalize ] multiply 1.43f]];
谢谢。
最佳答案
是的,这正是 autorelease
的恰当用法,事实上大多数使用您的代码的人都完全期望 cross
、normalize
、和 multiply
返回一个自动释放的对象。
关于c++ - Objective-C适当使用autorelease?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3795213/