Форум программистов, компьютерный форум, киберфорум
Наши страницы
Objective-C
Войти
Регистрация
Восстановить пароль
 
Pro2005
44 / 44 / 3
Регистрация: 27.05.2013
Сообщений: 163
#1

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

01.11.2013, 14:19. Просмотров 679. Ответов 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):

Делегирование
Здравствуйте, уважаемые форумчане. Делегирование предусматривает наличие двух...

Делегирование массива
Здравствуйте. Для отображения детальной информации из plist, во втором...

Не понимаю делегирование
Доброго времени суток всем! Изучаю objC недолго, имею небольшой опыт в Си/Си++...

Как лучше поступить?
Видеокарта GeForce GTX570 Процессор Intel Core i7 2600K Модуль памяти...

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

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

1
zulkis
684 / 611 / 43
Регистрация: 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
Привет! Вот еще темы с решениями:

Как лучше поступить?
Добрый день! Я студент 1 курса специальности "Компьютерные науки". Сейчас мы...

Как лучше поступить?
Доброго времени суток всем. Есть не совсем стандартный вопрос.. Имеем...

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

Как лучше поступить?
Ребятки, в который раз обращаюсь к вам за помощью, благодарности нет предела. ...


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

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

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