Форум программистов, компьютерный форум, киберфорум
Наши страницы

Экспресс строки - Objective-C

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Objective-C PUSH от вконтакте http://www.cyberforum.ru/objective-c/thread1189830.html
Есть такой трабл, сертификат push уведомлений для developmenta работает норм (тестил pushmybaby) все приходит. Пытаюсь его поставить как серт для push standalone-приложения для вконтакте, при...
Objective-C Хранение WEAK объектов в массиве Иногда возникает ситуация хранить в массиве просто указатели на объекты, таким образом, чтобы счетчик их ссылок при таком хранении не увеличивался, и они удалялись самостоятельно. При... http://www.cyberforum.ru/objective-c/thread1188576.html
Objective-C Сохранение ID пользователя в iCloud
Доброго времени суток. Изучаю работу с iCloud. Есть вопрос, мне нужно сохранять в облако id пользователя который генерируется один раз, потом при повторном запуске приложения сначал проверяет есть ли...
Программная прокрутка UISrollView Objective-C
Всем привет. Такая проблема, надо прокрутить программно UISrollView, пытаюсь использовать recttovisible , но почему то прокрутка не происходит... как правильно всё сделать?? спс
Objective-C BecomeFirstResponder http://www.cyberforum.ru/objective-c/thread1180743.html
Всем привет,возникла проблема с переносом текста-надо чтобы каждая следуйщая буква переносилась в новый ТекстФилд...пока текст филды делал через сториБоард - все работало,а как только переписал их...
Objective-C Приложение вылетает, сообщая о нехватке памяти Признаться, я долгое время искал решение своей проблемы сам и во многом ее решил, однако вылеты все же продолжаются... В итоге решил таки обратиться к сообществу братьев-программистов )) Итак,... подробнее

Показать сообщение отдельно
noname_club
103 / 94 / 10
Регистрация: 01.05.2013
Сообщений: 598
06.08.2014, 15:40  [ТС]
Небольшие изменения

1) убран статический класс, объявлена статическая переменная
2) добавлен макрос для объявления ключей словарей перед циклами

таким образом при каждой итерации в цикле строка не создается заново что экономит ресурсы

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#import <Foundation/Foundation.h>
 
#pragma GCC diagnostic ignored "-Wundeclared-selector" // << отключение предупреждений
 
#ifndef m_strformat
 
extern NSString * const k_EmptyString;
 
// форматированная строка
 
#define m_strformat(str, ...) [NSString stringWithFormat:str, ## __VA_ARGS__ ]
 
// склеивание строк через запятую
 
#define m_str(...) [[NSArray arrayWithObjects: k_EmptyString, ## __VA_ARGS__ , nil] componentsJoinedByString: k_EmptyString]
 
// объявление строк для циклов (в конец имени всегда добавлять лишний символ)
// значение соотвествует имени переменной
 
#define varSTR(str) NSString * str = NSStringFromSelector(@selector(str)); str = [str substringToIndex:str.length-1]
 
// для совместимости со строками которые содержат пробелы и прочий невозможно-объявлемый мусор
 
#define varSTRV(str,value) NSString * str = value
 
#endif
пример использования макроса для объявления ключей словарей перед циклами

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    
    // получаем данные
    
    NSData * data = [NSData dataWithContentsOfFile: [[NSBundle mainBundle] pathForResource:@"01.json" ofType:nil]];
    
    NSDictionary * json = [NSJSONSerialization JSONObjectWithData:data options:0 error:0];
    
    // цикл
    
    varSTR(id_);
    varSTR(title_);
    varSTR(regions_);
    
    varSTRV(format1, @"str1: %@");
    varSTRV(format2, @"str2: %@");
    
    for (NSDictionary * item in json[regions_]) {
        NSLog(format1, item[id_]);
        NSLog(format2, item[title_]);
    }
ответ консоли

2014-08-06 15:20:06.248 test_macro_string[1316:90b] str1: 444
2014-08-06 15:20:06.250 test_macro_string[1316:90b] str2: Астана
2014-08-06 15:20:06.250 test_macro_string[1316:90b] str1: 683
2014-08-06 15:20:06.251 test_macro_string[1316:90b] str2: Барнаул
2014-08-06 15:20:06.251 test_macro_string[1316:90b] str1: 594
2014-08-06 15:20:06.251 test_macro_string[1316:90b] str2: Белгород
2014-08-06 15:20:06.252 test_macro_string[1316:90b] str1: 140
2014-08-06 15:20:06.252 test_macro_string[1316:90b] str2: Владивосток

...
Исходник json
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{"regions":[
            {
            "id":444,
            "title":"Астана"
            },
            {
            "id":683,
            "title":"Барнаул"
            },
            {
            "id":594,
            "title":"Белгород"
            },
            {
            "id":140,
            "title":"Владивосток"
            },
            {
            "id":446,
            "title":"Владимир"
            },
            {
            "id":109,
            "title":"Волгоград"
            }
]}
1
Вложения
Тип файла: zip test_macro_string2.zip (35.2 Кб, 1 просмотров)
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru