- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- (void)addFavourite:(NSString *)path
{
NSMutableArray *favourites;
// Create an array if it’s not already there
if (![[NSUserDefaults standardUserDefaults] objectForKey:@"Favourites"]) {
favourites = [[[NSMutableArray alloc] init] autorelease];
} else {
favourites = [NSMutableArray arrayWithArray:[[NSUserDefaults standardUserDefaults] arrayForKey:@"Favourites"]];
}
// Check if already exists
NSUInteger idx = [favourites indexOfObjectPassingTest: ^BOOL (id obj, NSUInteger idx, BOOL *stop) {
return [obj isEqualToString:path];
}];
if (idx == NSNotFound) {
[favourites addObject:path];
}
// ...
}
Мало того, что работа с "избранным" раскидана по всему приложению (часть кода в AppDelegate, часть в тулбаре(!), часть во вьюшке, где рисуется таблица избранных), так ещё и изобретаем свои алгоритмы поиска.
wvxvw 11.11.2012 13:46 # 0
А в Обж-Си есть макросы? Ну, чтобы, например, не писать alloc] init] autorelease] а задефайнить это где-нибудь один раз.
fljot 11.11.2012 13:55 # +1
Во-первых, есть клёвая IDE AppCode от JetBrains, чтобы не писать это руками.
Во-вторых, http://stackoverflow.com/questions/1139884/how-to-create-a-macro-for-object-instantiation-in-objective-c-ansi-c
В-третьих, доля старых iOS уже мала, и можно задуматься об использовании ARC, так что никаких autorelease, retain, release тебе больше не нужно (если я правильно представляю ARC)
wvxvw 11.11.2012 14:42 # 0
fljot 11.11.2012 15:04 # 0
wvxvw 11.11.2012 15:27 # +1
ЗЫ. Лучшие традиции JetBrain это как лучшие туфли советской кожевенно-обувной промышленности.
Xtasy 12.11.2012 17:13 # 0
Сейчас о доле устройств с iOS <= 4.3, пользователи которых ставят приложения, можно говорить как о пренебрежимо малой (весной было менее трех процентов уже).
Кстати, и дизайн давно делаем только под Ретину.
guest 20.11.2012 09:25 # 0
guest 15.01.2013 19:27 # −1
bdevnameless 25.08.2021 19:25 # 0