从方法返回2个结果的最佳方法是什么?

时间:2012-07-26 16:20:35

标签: objective-c ios pass-by-reference

我有一个返回整数的方法,我现在也想返回一个小结构或类。如果我使用C ++,我会将结构作为参数传递给结构。在使用ARC的iOS中,我认为等效的是使用指向具有__autoreleasing属性的指针,我觉得这有点麻烦。

我可以返回一个包含这两个值的数组,但后来认为我会分配超过必要的数量,而且我可以使用它(100,000次调用)。

2 个答案:

答案 0 :(得分:3)

即使使用ARC,您也可以通过引用或对象指针传递结构...

通过ref传递结构,就像在C ++中一样,例如&aStruct

-(int)getStuffOut:(SomeStruct *)aStruct {
   if(!aStruct) {
      return 0;
   }
   aStruct->myInt = 12345;
   aStruct->myFloat = 12.345f;
   return 1;
}

或者:

-(int)getStuffOut:(SomeClass *)anObject {
   if(!anObject) {
      return 0;
   }
   anObject.myIntProperty = 12345;
   anObject.myFloatProperty = 12.345f;
   return 1;
}

答案 1 :(得分:0)

如果您正在使用ARC,那么如果您使用普通的Objective-C,则不必担心内存管理。

自定义对象通过引用传递,因此您可以将OBJ-C对象传递给方法并填充您的内容。

或者您可以返回包含两个值的Struct

+(struct YourStruct)someMethod:(NSString *)someParam;

+(YourStruct)someMethod:(NSString)someParam {

    //some method code

    YourStruct st;

    //Do something here with the struct

    return st;
}