Comments 20
Где же ссылка на GIT? Охота переписать это дело на ARC. Код годный, хотя у ребят, которые пришли в айфон не из C# может вызвать панику и бугурт — айфонщики очень любят средства из коробки. И на то есть причина — в основном, реализации всяких там DAO, и других паттернов мудрых выглядят на Objective-C убого, ведь он как Ruby — чем проще, тем лучше. Друго дело, если таким велосипедом решается проблема синхронизации.
Я вот не совсем понял вот это «Событийно-ориентированная логика в Objective C держится на трех китах — протоколы, notification center и key-value observing», а точнее при чем тут протоколы? Ну и причины побудившее Вас к написанию «велосипеда» тоже описаны расплывчато и опять при чем тут протоколы и, раз уж они Вам не нравятся, то где в статье другие методы расширения классов?
На базе протоколов тоже замечательно реализуется событийно-ориентированная логика.
А причины мутные именно в силу того, что тут вопрос вовсе не в том, что так надо или не надо, а в том, как привычнее. Мне привычен и удобен данный подход, хотя в зависимости от места я использую и подписание через KVO, и нотификации, и проброс событий с помощью протоколов.
А причины мутные именно в силу того, что тут вопрос вовсе не в том, что так надо или не надо, а в том, как привычнее. Мне привычен и удобен данный подход, хотя в зависимости от места я использую и подписание через KVO, и нотификации, и проброс событий с помощью протоколов.
Спасибо за свежий взгляд со стороны! Но стандартные notifications вы явно недооценили. Стек они вовсе не разрывают, если конечно вы не посылаете их асинхронно. И отрабатывают они в том же потоке, из которого они были посланы, а не обязательно в main thread.
Критиковать не сложно, попробую вас поддержать! Что мне не нравится в стандартных notifications, так это объемный синтаксис и то, как передаются параметры. Вот если бы посылать сообщение с произвольным числом типизированных параметров, и через message forwarding пересылать подписчикам — может получиться что-то интересное…
Критиковать не сложно, попробую вас поддержать! Что мне не нравится в стандартных notifications, так это объемный синтаксис и то, как передаются параметры. Вот если бы посылать сообщение с произвольным числом типизированных параметров, и через message forwarding пересылать подписчикам — может получиться что-то интересное…
Событийно-ориентированная логика в Objective C держится на трех китах — протоколы, notification center и key-value observing.
А как же блоки? и не протоколы, раз уж на то пошло, а делегирование.
Блоки — это техническая вещь, представляющая собой фактически анонимный метод, я не думаю, что следует обращать особое внимание на это.
Блоки — это техническая вещь, представляющая собой фактически анонимный метод
Это не так, и именно в этом и заключаются мощные возможности блоков для обработки событий
Расскажите мне, что имеется ввиду.
Блоки являются замыканиями, поэтому позволяют обрабатывать события в стиле javascript:
SomeClass *someObject = self.someObject;
[object on:@"EventName" do:^(Event *event) {
[someObject doSomething];
}];
Кроме очень мутной задачи, которую Вы решали (догадываюсь, что Вам бы помог NSNotificationQueue, который отлично описан в документации) мне не нравится использование названия delegate. Вы что-то кому-то делегируете? Нет. Очень часто вижу в коде разных исходников delegate к месту и не к месту.
В .NET для указателей на методы класса используется понятие «делегат», который фактически представляет собой пару target+method то есть является фактически полноценным method as the first class object.
Проблемы с терминологией решаются автозаменой.
Проблемы с терминологией решаются автозаменой.
И вообще часто сталкиваюсь с тем, что кто-то пришел с другого языка и тянет за собой все с формулировкой «Я так привык». Может лучше привыкнуть/переучиться на стандартные методы для платформы? Ну сделали вы велосипед, а как теперь его использовать для системных классов? Будем где использовать NSNotificationCenter, а где-то Ваш код? А третий человек придет из языка _новый_язык_ и тоже добавит в этот же проект еще одну систему, так как он к ней «привык»?
Вместо велосипеда с NSArray для групировки объекта, селектора и аргументов лучше использовать NSInvocation и пересылать в нужный runLoop вызов invoke.
Спасибо.
Вот, еще может ссылочка пригодится. www.mikeash.com/pyblog/friday-qa-2011-07-08-lets-build-nsnotificationcenter.html
блин, как это всё сложно для новичка — просто капец
Sign up to leave a comment.
Objective C. Практика. События