我正在学习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的适当用法,实际上,大多数使用您代码的人都完全希望crossnormalizemultiply返回一个自动释放的对象。

10-02 07:19