2011-10-29 44 views
-1

我有一類名爲MyClass包含3 NSInteger的,我不能做這樣的一個方法:方法返回我的對象​​目標C

- (myClass)getClass { 
    myClass *class1; 
    return class1 
} 

它給了我一個錯誤

編輯:錯誤在.h中

- (myClass *)getClass; Error: expected ')' before 'myClass' 
+0

什麼樣的錯誤? – millimoose

+0

@Inerdia可能「接口類型'myClass'不能被值返回。」 – 2011-10-29 14:38:21

+0

不,「預計」)'myClass之前「 – asterix22

回答

1

我想您返回myClass的實例。你可以是這樣做的:

- (myClass *)getClass { 
    myClass *class1 = [[[myClass alloc] init] autorelease]; 
    return class1; 
} 

相反,如果你想返回類本身:如果你希望它是一個類的方法,而不是

- (Class)getClass { 
    return myClass; 
} 

您可以將-更改爲+一個實例方法。你的問題不太清楚。


在Objective-C,你永遠不能憑藉它的值返回一個對象,因爲在Objective-C的對象的大小在編譯時已知的。如果你不喜歡星號,你可以使用typedef myClass* myClassRef,並返回myClassRef

+0

謝謝,但錯誤在.h中,而不是在.m中。我在.m中也有錯誤,但是我寫了你的第一個代碼,並且我修復了它們。 – asterix22

0

在Objective-C中,每個類的類型都是引用類型。所以,返回類型應該是myClass*。當我們有一個像指針 -

int *ptr = new int; // The type of ptr is int* but not int. Same is the case for 
         // class types too. 
+0

是的,我已經寫了 - ,但是我會試着用* – asterix22

+0

@ user1019831 - 嗯..你修改了這個問題。 – Mahesh

+0

這是C++,而不是Objective-C。 – 2011-10-29 14:31:44

0

完成馬赫什響應,你需要做的:

- (myClass*) getClass { 
    myClass *class1; 
    return class1; 
} 

,或者如果方法是靜態的,你需要做的:

+ (myClass*) getClass { 
    myClass *class1; 
    return class1; 
}