코드가 제대로 작동하는 것 같습니다. 그것의 끔찍한 코드는 괜찮 았지만, // 아무것도하지 않는 섹션은 어떤 match에도 호출되고 // something something 섹션은 배열의 각 불일치에 대해 호출됩니다. 나는 당신이 // 일치하는 것이 없다면 // 아무 것도하지 않는 섹션이 한 번 실행될 것을 기대하고 있고, // 일치하는 것이 있으면 실행되는 무언가 섹션을 한 번 수행 할 것이라고 생각한다.
-(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을 다시 사용하지 마십시오 (상수 제외). 당신이 읽을 훨씬 쉽고 명확 현대 플랫폼 (10.5 또는 아이폰), 사용할 수있는 빠른 열거를 위해 개발하는 경우,
NSArray* alphaArray = [NSArray arrayWithObjects: @"A", @"B", @"C", nil];
다음 :이 경우 taebot이 설명 된대로 배열을 만들 것입니다 :
-(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에 대한 설명서를 읽어 가야 한 다음 KiwiBastard 지적 것을 containsObject 같은 방법을 찾을 수 있습니다, 당신이 당신의 루틴을 다시 작성할 수 있습니다 예 :
-(void) findRedundant: (NSString *) aString {
NSArray* alphaArray = [NSArray arrayWithObjects: @"A", @"B", @"C", nil];
if ([alphaArray containsObject: aString]) {
// do found
} else {
// do not found
}
}
질문에 왜 효과가 없는지 추가 할 수 있습니까? –