函数调用出错

时间:2011-08-03 17:03:03

标签: iphone objective-c

我有以下功能:

-(void) CalLevels: (NSMutableArray *)rPrices: (NSMutableDictionary *) rLevels: (float) nClose: (float) nHigh: (float) nLow: (float) nOpen {...}

我调用上述函数如下:

[self CalLevels:rm.rPrices  rLevels:rm.rLevels nClose:nCloseD nHigh:nHighD nLow:nLowD nOpen:nOpenD];

我找不到警告方法。谢谢你的帮助。

3 个答案:

答案 0 :(得分:2)

你应该这样称呼它:

[self CalLevels:rm.rPrices  :rm.rLevels :nCloseD :nHighD :nLowD :nOpenD];

或更改方法声明,因为rLevel及其朋友是变量的内部方法名称,而不是方法名称的一部分。

正确的方法是上面的方法,或更改方法签名:

-(void) CalLevels: (NSMutableArray *)rPrices  rLevels: (NSMutableDictionary *) rLevels nClose: (float) nClose nHigh: (float) nHigh nLow: (float) nLow nOpen : (float) nOpen {...}

答案 1 :(得分:2)

您的方法声明已被破坏。你写道:

-(void) CalLevels: (NSMutableArray *)rPrices: (NSMutableDictionary *) rLevels: (float) nClose: (float) nHigh: (float) nLow: (float) nOpen

这声明了一个名为CalLevels::::::的方法。 rLevelsnClose以及所有被解析为参数名称的内容。你可能想要声明一个名为alLevels:rPrices:rLevels:nClose:nHigh:nLow:nOpen:的人。这看起来更像是这样:

- (void)CalLevels:(NSMutableArray *)levels rPrices:(NSMutableDictionary *)rPrices rLevels:(float)rLevels nClose:(float)nClose nHigh:(float)nHigh nLow:(float)nLow nOpen:(float)nOpen

(我猜测nOpen意味着浮动。)

答案 2 :(得分:1)

@MByD所写的内容可行,但如果您想遵守Naming Conventions,则需要重命名您的方法。现在,您的方法名为CalLevels::::::rLevelsnClose等是不属于名称的参数名称。如果您想遵循命名约定,您需要:

  • 以小写字母开头。 CalLevels...错了,calLevels...是对的。
  • 在所有参数之前使用关键字。 calLevels::::::错了,calLevels:rPrices:rLevels:nClose:nHigh:nLow:nOpen:是对的。

导致类似这样的事情:

-(void)calLevels:(NSMutableArray *)rLevels rPrices:(NSMutableDictionary *)rPrices nClose:(float)nClose nHigh:(float)nHigh nLow:(float)nLow nOpen:(float)nOpen;