我有一个有一个方法的课程:
-(NSInteger) getCityCountForState:(NSString *)state CityArray:(NSMutableArray *)cityArray {
NSInteger count = 0;
City *city = [[City alloc] init];
for(city in cityArray)
{
if (city.state == state)
{
count++;
}
}
return count;
}
从同一类的其他地方调用该方法:
count = [getCityCountForState:state CityArray:appDelegate.cities];
这给出错误“'getCityCountForState'未声明(首次在此函数中使用)”
我也尝试过:
count = [self.getCityCountForState:state CityArray:appDelegate.cities];
这给出了错误“请求成员'getCityCountForState'的东西,而不是结构或联合”
我显然错过了一些明显的东西......但我无法弄清楚它是什么。
答案 0 :(得分:13)
count = [self getCityCountForState:state CityArray:appDelegate.cities];
通常的Objective-C命名约定会主张重新命名该方法,但至少可以使调用正常工作。
编辑:这是一个开始阅读的好地方:Coding Guidelines for Cocoa。就个人而言,我主张称之为:
- (NSInteger)countCities:(NSArray*)cities forState:(NSString*)state;
答案 1 :(得分:5)
您还应该删除
行City *city = [[City alloc] init];
并将City *
放入for
声明
for (City *city in cityArray)
这会使它变得有点短并消除内存泄漏
答案 2 :(得分:4)
Sixten回答正确,但我想我会指出你的代码有内存泄漏;你不需要[[City alloc] init],因为你是从数组中读出它们而不是在你的逻辑中创建新的。
如果您是obj-c和cocoa的新手,我建议您阅读Memory Management Guide。
答案 3 :(得分:4)
Objective-C方法调用语法是:
[receiver message]
当你写道:
[getCityCountForState:state CityArray:appDelegate.cities]
您试图向CityArray:appDelegate.cities
发送getCityCountForState:state
条消息。
您应该查看Objective-C语法。阅读Apple对该语言的介绍。
答案 4 :(得分:0)
在标题中声明了-getCityCountForState:CityArray:
吗?如果没有,那么定义必须先于用法。