выглядит хорошо. Если вы заботитесь, могут быть небольшие улучшения.
1.
[NSString stringWithFormat:@"%@/news/news/25/stories.json", api]
можно заменить на
[api stringByAppendingString:@"/news/news/25/stories.json"]
если нет никаких шансов, то api
появится посередине или примет другие аргументы.
2.
NSString *name = (NSString *)[namesArray objectAtIndex:i];
NSString *url = (NSString *)[urlsArray objectAtIndex:i];
Явное приведение не требуется. id
может быть неявно приведен к и от других объектов ObjC.
3.
Вы можете использовать удобный метод -dictionaryWithObjectsAndKeys:
, чтобы создать словарь за один раз, поэтому вам не нужен словарь температуры:
[result addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:
name, @"NAME",
url, @"URL",
@"NO", @"HASSTORIES", nil]];
4. (Опционально)
Это преобразование бесполезно, если функция не является горячей точкой.
Поскольку массивы используются только локально, более эффективно использовать массив C.
static const int arraySize = 5;
NSString* namesCArray[] = {@"News", @"Sports", @"Entertainment", @"Business", @"Features"};
NSString* urlsCArray[arraySize];
urlsArray[0] = [api stringByAppendingString:@"/news/news/25/stories.json"];
...
for (int i = 0; i < arraySize; ++ i) {
...
NSString* name = namesCArray[i];
NSString* url = urlsCArray[i];
...
}
удаляет повторные вызовы -count
и -objectAtIndex:
, что очень медленно по сравнению с прямым доступом к элементу.
5. (Опционально)
Это преобразование бесполезно, если массив короткий.
Вы можете использовать быстрое перечисление для циклического перемещения по контейнеру ObjC:
int i = 0;
for (NSString* name in namesArray) {
NSString* url = [urlsArray objectAtIndex:i];
...
++ i;
}
6.
Обычно мы используем [NSNumber numberWithBool:NO]
для представления значения true / false в штучной упаковке вместо строки @"NO"
. NSNumber также часто используется всякий раз, когда нельзя использовать простое число (int
, float
и т. Д.) (Например, для хранения в NSArray). Я не знаю, требуется ли для вашего API явно строка НЕТ, поэтому она может не подойти вам.