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

Objective-C

Войти
Регистрация
Восстановить пароль
 
Pro2005
44 / 44 / 3
Регистрация: 27.05.2013
Сообщений: 163
#1

Подскажите как лучше поступить(делегирование,дефайн.) - Objective-C

01.11.2013, 14:19. Просмотров 647. Ответов 1
Метки нет (Все метки)

Господа... у меня есть property 'user'... который хранится в AppDelegate
Я могу к нему достучаться через такую вот конструкцию
Objective-C
1
2
AppDelegate *delegate = [UIApplication sharedApplication].delegate;
[delegate.user anyMethod];
Но блин меня напрягает эта большая конструкция, я хочу получить доступ исп одну строчку....и чем короче и информативней - тем лучше Т.к такая конструкция будет не однократно повторятся в коде...

Я вот пришел вот к этому:
Objective-C
1
2
3
4
5
6
7
#define SUPPRESS_PERFORM_SELECTOR_LEAK_WARNING(code)                        \
_Pragma("clang diagnostic push")                                            \
_Pragma("clang diagnostic ignored \"-Warc-performSelector-leaks\"")         \
code;                                                                       \
_Pragma("clang diagnostic pop")
 
#define getCurrentUser  SUPPRESS_PERFORM_SELECTOR_LEAK_WARNING([[[UIApplication sharedApplication] delegate] performSelector:NSSelectorFromString(@"user")];)
Ну и в дальнейшем чтобы достучаться:
Objective-C
1
User *user = getCurrentUser;
Как считаете... если у этой конструкции право на существования, или посоветуете что-то другое...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.11.2013, 14:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Подскажите как лучше поступить(делегирование,дефайн.) (Objective-C):

Делегирование - Objective-C
Здравствуйте, уважаемые форумчане. Делегирование предусматривает наличие двух классов - делегатора и делегата. У делегатора объявляется...

Делегирование массива - Программирование iOS
Здравствуйте. Для отображения детальной информации из plist, во втором контроллере, использую вот такой код: -...

Не понимаю делегирование - Objective-C
Доброго времени суток всем! Изучаю objC недолго, имею небольшой опыт в Си/Си++ Объясните мне, пожалуйста, зачем нужны делегаты? Все что...

Как лучше поступить? - Блоки питания
Доброго времени суток всем. Есть не совсем стандартный вопрос.. Имеем систему мать - Gigabyte GA-970A-UD3 Hdd - Hitaci 320gb и...

Как лучше поступить? - Программирование Android
Есть уже законченное приложение. Принцип которого вэб приложение, грузящее основную часть через инет. Но не суть - тут всё работает. Есть...

Как лучше поступить? - MySQL
Есть активно работающая таблица с несколькими десятками тысяч записей. Только сейчас появилась потребность в том, чтобы каждая запись...

1
zulkis
682 / 609 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
01.11.2013, 14:42 #2
Сделайте статический метод в классе User:
Objective-C
1
2
3
+ (User*)currentUser {
    return ((AppDelegate*)([UIApplication sharedApplication].delegate)).user;
}
И доставайте его через
Objective-C
1
[User currentUser];
Если еще лучше вариант - хранить статичный указатель в классе User:
Objective-C
1
static User *_currentUser = nil;
Когда нужно(при логине) - туда сетить экземпляр класса User, а затем:
Objective-C
1
2
3
+ (User*)currentUser {
    return _currentUser;
}
Все просто. не усложняйте. Пользуйтесь возможностями языка.
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.11.2013, 14:42
Привет! Вот еще темы с ответами:

Как лучше поступить? - Апгрейд компьютера
Видеокарта GeForce GTX570 Процессор Intel Core i7 2600K Модуль памяти Kingston HyperX 4096Mb x2 Материнская плата ASUS P8H67 Блок...

Как лучше поступить? - Оперативная память
Доброго времени суток. По непонятной причине вышел из строя один из двух таких модулей. Как лучше поступить: купить идентичный вышедшему...

Как мне лучше поступить? - Базы данных
У меня есть таблица в .xls формате. Там около 8000 записей, причем эту таблицу будут периодически дополнять новыми записями и высылать мне....

Как лучше поступить с большой БД - MySQL
Имеется БД в которой есть 20 таблиц примерно по 100 000 записей в каждой. В каждой таблице есть по 20-25 полей. Есть 7 полей которые...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru