2012-07-26 100 views
0

我有一個方法返回一個整數,我現在也想返回一個小的結構或類。如果我使用的是C++,我會將參數作爲參數傳遞給結構體。在使用ARC的iOS中,我認爲相當於使用指向具有__autoreleasing屬性的指針的指針,該指針我覺得有點麻煩。什麼是從方法返回2個結果的最佳方式

我可以返回一個包含兩個值的數組,但然後認爲我會分配超過必要的數量,我可能會使用很多(100,000次調用)。

+0

你可以只使用objC++,並通過引用傳遞結構,就像您在C++中。 – 2012-07-26 17:04:04

回答

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; 
} 
+0

確保你檢查'aStruct'爲零! – 2012-07-26 17:03:14

+0

@ RichardJ.RossIII是的,我忘記了錯誤檢查並沒有深入到每個人的心中。 =)爲了正確而編輯包含! – MechEthan 2012-07-26 17:08:53

0

如果你使用ARC,如果你使用普通的Objective-C,你不必擔心內存管理。

自定義對象是按引用傳遞,這樣你就可以通過你的OBJ-C對象的方法,並填寫你的東西英寸

或者你可以返回擁有兩個值一個結構

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

+(YourStruct)someMethod:(NSString)someParam { 

    //some method code 

    YourStruct st; 

    //Do something here with the struct 

    return st; 
} 
+0

我不能這樣做,因爲返回值用於整數。此外,我認爲這將使YourStruct的新實例不是嗎? – Ant 2012-07-26 16:33:54

+0

將該返回值添加到您的結構中,那麼您的結構將包含返回值和您嘗試發送的額外數據 – Ecarrion 2012-07-26 16:34:56

+0

不,它們是單獨的變量。該結構被許多方法使用,所以我將不得不添加所有的原始返回類型。這是不對的。 – Ant 2012-07-26 16:35:57

相關問題