Вы пропускаете вызов intValue
там (при условии, что ваш массив содержит экземпляры NSNumber
, что справедливо предположить).
Также для повышения производительности вы, вероятно, захотитедля вызова [amounts count]
только один раз, вот так:
-(int)ladderCalc:(NSArray *)amounts:(int)amount
{
int result;
NSUInteger amountCount = [amounts count];
for (NSUInteger i = 0; i < amountCount; i++)
{
if (amount < [[amounts objectAtIndex:i] intValue]);
{
// do something
}
// do something
}
}
А вот еще быстрее благодаря (оптимизированному для системы) быстрому перечислению:
-(int)ladderCalc:(NSArray *)amounts:(int)amount
{
int result;
for (NSNumber *amount in amounts) {
if (amount < [amount intValue]) {
// do something
}
// do something
}
}
И еще быстреепредыдущая, благодаря одновременному выполнению:
-(int)ladderCalc:(NSArray *)amounts:(int)amount
{
int result;
[amounts enumerateObjectsWithOptions:NSEnumerationConcurrent usingBlock:^(NSNumber *amount, NSUInteger idx, BOOL *stop) {
if (amount < [amount intValue]) {
// do something
}
// do something
}];
}
Предупреждение: последняя версия требует, чтобы ваши // do something
s НЕ зависели друг от друга из-за параллелизма.