我有一個方法返回一個整數,我現在也想返回一個小的結構或類。如果我使用的是C++,我會將參數作爲參數傳遞給結構體。在使用ARC的iOS中,我認爲相當於使用指向具有__autoreleasing屬性的指針的指針,該指針我覺得有點麻煩。什麼是從方法返回2個結果的最佳方式
我可以返回一個包含兩個值的數組,但然後認爲我會分配超過必要的數量,我可能會使用很多(100,000次調用)。
我有一個方法返回一個整數,我現在也想返回一個小的結構或類。如果我使用的是C++,我會將參數作爲參數傳遞給結構體。在使用ARC的iOS中,我認爲相當於使用指向具有__autoreleasing屬性的指針的指針,該指針我覺得有點麻煩。什麼是從方法返回2個結果的最佳方式
我可以返回一個包含兩個值的數組,但然後認爲我會分配超過必要的數量,我可能會使用很多(100,000次調用)。
即使使用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;
}
確保你檢查'aStruct'爲零! – 2012-07-26 17:03:14
@ RichardJ.RossIII是的,我忘記了錯誤檢查並沒有深入到每個人的心中。 =)爲了正確而編輯包含! – MechEthan 2012-07-26 17:08:53
如果你使用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;
}
你可以只使用objC++,並通過引用傳遞結構,就像您在C++中。 – 2012-07-26 17:04:04