Вы можете использовать NSDictionary и использовать статические строки в качестве ключей.Я думаю, что вы получите хорошее ускорение от этого.(Поисковый словарь, вероятно, хэширует входную строку, которую вы используете в качестве ключа.)
Если вы покажете больше подробностей, я, вероятно, могу дать более подробный ответ.Например, вы можете даже сохранить код «сделать что-то здесь» как блок в стиле ^ {}.
ОБНОВЛЕНИЕ Я сейчас на своем компьютере и могу сослаться на какой-то реальный код для вас.Это основано на том, что я уже сделал.Ваш код может быть изменен следующим образом:
xxxList = [[NSMutableArray alloc] init];
xxxListActionDictionary = [[NSMutableDictionary alloc] initWithCapacity:10]; // add this line
[xxxList addObject:@"TEXT HERE"];
[xxxListActionDictionary
setObject:
[[^{
// DO SOMETHING HERE. THIS IS A BLOCK. SOME CODE TO BE EXECUTED.
} copy] autorelease] // I don't think you need autorelease if you use ARC
forKey:@"TEXT HERE"]; // TEXT HERE is the same text put into the xxxListArray
ect.
[tableView deselectRowAtIndexPath:indexPath animated:YES];
// Here is where it gets efficient.
// The next three lines of code replace the entire if-else if...
void (^action)(void) = [xxxActionDictionary objectForKey:[[xxxList objectAtIndex:indexPath.row]];
if (action != nil) // you want to make sure the key is in the dictionary. may not be needed in your case.
action(); // this executes the block
ОБНОВЛЕНИЕ
stationList = [[NSMutableArray alloc] init];
[stationList addObject:@"Q-dance Radio"];
[stationListDictionary setObject:@"http://whateverQDanceRadioIs.com/folder/..." forKey:@"Q-dance Radio"];
[stationList addObject:@"The Voice"];
[stationListDictionary setObject:@"http://whateverTheVoiceIs.com/folder/..." forKey:@"Q-dance Radio"];
(ect ...)
[tableView deselectRowAtIndexPath:indexPath animated:YES];
[player pause];
NSString *u = [stationListDictionary objectForKey[stationList objectAtIndex:indexPath.row]];
NSURL *url = [NSURL URLWithString:u];
player = [[AVPlayer alloc] initWithURL:url];
[player play];