2014-04-05 123 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]; 

这是正确的。