Ваш код работает нормально. Это ужасный код, но он работает нормально, // секция ничего не вызывается для любого совпадения, а секция // что-то вызывается для каждого несоответствия в массиве. Я подозреваю, что проблема в том, что вы ожидаете, что // раздел ничего не будет выполнен один раз, если нет совпадений, и // раздел что-то будет выполнен один раз, если есть какое-либо совпадение, что не так. Вы, вероятно, хотите:
-(void) findRedundant: (NSString *) aString {
#define ALPHA_ARRAY [NSArray arrayWithObjects: @"A", @"B", @"C", nil]
BOOL found = NO;
NSUInteger f;
for (f = 0; f < [ALPHA_ARRAY count]; f++) {
NSString * stringFromArray = [ALPHA_ARRAY objectAtIndex:f];
if ([aString isEqualToString:stringFromArray]) {
found = YES;
break;
}
}
if ( found ) {
// do found
} else {
// do not found
}
}
Кроме того, вы явно не понимаете макросы и когда вы должны и не должны их использовать (как правило, вы никогда не должны их использовать, за очень немногими исключениями). Макрос в тексте подставляется в ваш код. Это означает, что создание и инициализация массива происходит каждый раз, когда вы используете ALPHA_ARRAY. Это ужасно.
По сути, никогда не используйте #define снова (за исключением констант), пока не получите более глубокое понимание того, что вы делаете. В этом случае вы должны создать массив, как описано ниже:
NSArray* alphaArray = [NSArray arrayWithObjects: @"A", @"B", @"C", nil];
Далее, если вы разрабатываете для современной платформы (10.5 или iPhone), вы можете использовать быстрое перечисление, которое намного проще и понятнее для чтения:
-(void) findRedundant: (NSString *) aString {
NSArray* alphaArray = [NSArray arrayWithObjects: @"A", @"B", @"C", nil];
BOOL found = NO;
for ( NSString* stringFromArray in alphaArray ) {
if ([aString isEqualToString:stringFromArray]) {
found = YES;
break;
}
}
if ( found ) {
// do found
} else {
// do not found
}
}
И, наконец, вы должны прочитать документацию по NSArray и NSString, чтобы увидеть, что вы можете сделать бесплатно, а затем вы найдете методы, такие как containsObject, на которые указал KiwiBastard, и вы можете переписать свою подпрограмму следующим образом:
-(void) findRedundant: (NSString *) aString {
NSArray* alphaArray = [NSArray arrayWithObjects: @"A", @"B", @"C", nil];
if ( [alphaArray containsObject: aString] ) {
// do found
} else {
// do not found
}
}