2014-04-05 91 views
0

我想用不同的方法A.問題是方法B的aksed參數不存在方法A 這裏就是我試圖調用方式B ..調用對象 - 方法

-(void) methodA { 

    // some code 

    CGSize *size = [CGSizeMake(self.frame.size.width, self.frame.size.height)]; 

    [self methodB:size]; 
} 

-(void) methodB:(CGSize) size { 

    //some code 
} 

當然是有一個更好的辦法...

感謝

回答

0

我不認爲你的代碼將被編譯。

CGSize不是一個對象。 重構爲:

CGSize size = CGSizeMake(self.frame.size.width, self.frame.size.height); 
[self methodB:size]; 
+0

好的..這個工程到目前爲止,但(方法b定位一些精靈)精靈被定位在0,0而不是在選定的地方。這可能是什麼原因? – user3138007

+0

你應該分享一些更多的代碼,或者詢問關於這個問題的其他問題。 – Krivoblotsky

0

您應該只包[]周圍的方法。 CGSizeMake(self.frame.size.width, self.frame.size.height)是一個函數,而不是一個方法,所以擺脫方括號。你可以告訴它是一個函數,因爲函數看起來像functionName(argument1, argument2, ...),而方法看起來像[object methodName:argument1 methondNameContinued:argument2]

此外,CGSizeMake返回CGSize結構,而不是一個指向CGSize結構,所以在溝的*size*

然後你會留下這樣的:

CGSize size = CGSizeMake(self.frame.size.width, self.frame.size.height); 
[self methodB:size]; 

這是正確的。