• Как я написал игру за 3 года
    0
    Если бы был девайс с Андрюхой — обязательно поставил бы, идея понравилась
  • Windows Phone как экспериментальная платформа
    0
    один раз я хотел сделать механизм, позволяющий удаленно смотреть логи клиента, но пошел дальше и реализовал нечто вроде механизма удаленного управления клиентским приложением.

    То есть, если у вас есть пул сессий — можно подключиться к конкретной сессии, и делать все, что угодно. Это особенно удобно в отладке. Организовать взаимодействие удобно можно, если поднять в приложении Telnet-сервер)) Я правильно понял, что у вас сделано не так? Или вы тоже удаленно управляете?)
  • Как непродуманные предупреждения компиляторов помогают портить совершенно правильный код
    +1
    при написании кода на obj-c в Xcode — лично встречается 2 случая, когда рекомендуется мутить компилятор clang прагмами.

    В первом случае — когда объекту базового класса (вообще-то динамически типизированный язык) пытаюсь передать селектор (нечто вроде указателя на функцию) конкретного класса — он выдает варнинг, что не факт, что метод с таким селектором будет у конечного объекта. Приходится мутить, потому-что перед этим обычно выполняется ручная проверка на то, есть ли данный селектор в таблице селектора объекта (таблица указателей методов). И компилятор не понимает эту проверку!

    И еще довольно специфичная работа с памятью в iOS (что-то типа умных указателей со счетчиком ссылок), которые живут в retain-циклах (retain увеличивает число ссылок на 1). Существуют случаи, когда приходится мутить сообщения комилятора, связанные с его анализом этих циклов (особенно при использовании блоков). Блок — это что-то вроде функции, определенной внутри другой функции (функции второго порядка). Причем данного рода прагмы я встречал при анализе кода более, чем в нескольких разных фреймворках

    Так и живем (по поводу торжества компилятора на наших костях) ...
  • Пишем реализацию Observer-а над KVO на objective-c
    0
    все это не совсем так — я за всеми этими свойствами веду наблюдение (и имею не одного подписчика), да и в дальнейшем, если мне где-то нужно будет еще следить за чем-то — я получаю большой выигрыш, потому-что смогу очень быстро реализовать новый функционал.

    Если подписываться на изменение модели — это требует написания лишних строчек willChangeValueForKey/didChangeValueForKey в местах, где происходят изменения объектов. Хотя, кажется, там был какой-то автоматический механизм. В любом случае это тоже неплохая идея, но сделал уже именно так, и оно неплохо сразу заработало
  • Пишем реализацию Observer-а над KVO на objective-c
    0
    это же лишний раз заворачивать во враппер нужно)
  • Пишем реализацию Observer-а над KVO на objective-c
    –2
    это комментарий немного в стиле «зачем писать на высокоуровневых языках, если можно писать на асме». А если больше по теме — то мы должны стараться использовать более точные абстракции, соответствующие задаче. Вот например, мы же вместо NSURLConnection — стремимся использовать именно AFNetworking (потому-что он более удобен), или например, RestKit для работы с RESTful сервисами, потому-что эти библиотеки представляют нам более удобные интерфейсы для нашей задачи. В некоторых случаях, мы конечно, теряем управляемость, и тратим лишнее время (если реализуем собственные решения), но в дальнейшем мы можем иметь выигрыш (особенно в крупных проектах). Потому-что в дальнейшем низкоуровневый код будет сложно модифицировать и понимать.
  • UINavigationController и с чем его едят: базовые принципы, субклассирование, защита от двойных переходов и многое другое
    0
    То есть вместо я предлагаю в некоторых случаях блокировать некоторые вызовы методов, подвергающие данные изменениям. В случае с анимациями — это пользовательское взаимодействие, блокирование обработчиков событий
  • UINavigationController и с чем его едят: базовые принципы, субклассирование, защита от двойных переходов и многое другое
    0
    я имею в виду то, что если сделать определенную манипуляцию над данными во время исполнения асинхронного кода, то мы можем получить в результате, что при дальнейшем исполнении обработаются некорректные данные. С сетевыми запросами, например так. Если во время запроса перейти на другое представление выше в иерархии, то указатель на контроллер высвободится, и в результате мы можем получить где-нибудь эксепшен. Простые блокировки, критические секции и мьютексы не всегда способны решить все проблемы с данными, используемыми одновременно более, чем одним потоком.
  • Богатый, разнообразный, свободный веб, который я так любил, за годы, проведенные мной в Иранской тюрьме просто умер. Почему никто не остановит это?
    0
    «Сеть испортилась» (с) люди. «Люди испортились» (с) сеть
  • UINavigationController и с чем его едят: базовые принципы, субклассирование, защита от двойных переходов и многое другое
    0
    1) я привел наиболее общий подход проверки перед вызовом метода
    2) ранее я тоже писал через weak, но в последнее время в большинстве мест у Apple встречаю запись через assign. Тоже, на самом деле, удивило. Но привел здесь вариант со спецификатором assign
    3) если аккуратно использовать метод endIgnoringInteractionEvents — то ничего, а что лочило, пока не довел до ума — такое было. Я не упомянул один недостаток блочить чисто вьюхи. Блокирую таким образом — кнопка back так и останется подсвеченной. Видимо по какой-то причине приходит touchDown, а touchUpInside/touchUpOutside не приходит
    4) нет, не пробовал. По правде, даже и не до конца понял суть данного подхода, как его применить
  • UINavigationController и с чем его едят: базовые принципы, субклассирование, защита от двойных переходов и многое другое
    0
    разве begin / commit методы здесь служат не для группировки анимаций? При вызове коммита — создается явная транзакция, и на GPU отдельно обрабатывается в отдельном потоке (асинхронно). Разве не?

    Проект не мой, на него меня посадили, потому-что другие от него отказывались. Я же пустил тяжелую артиллерию рефакторинга и архитектурных изменений, с багами уж так вышло, но дела идут более менее успешно
  • UINavigationController и с чем его едят: базовые принципы, субклассирование, защита от двойных переходов и многое другое
    0
    не пробовал пользоваться) методы на завершение транзишена с 7й прошивки, а у меня текущий проект с ios 6 sdk, к тому-же если будет такое поведение только на устройствах с такой вот прошивкой — это будет не слишком хорошо, так как поведение везде должно быть идентичным. Но интересный способ отлавливания
  • UINavigationController и с чем его едят: базовые принципы, субклассирование, защита от двойных переходов и многое другое
    0
    вот оплошал, оно со стрелочкой создает)) вроде бы и помню, что когда делал как-то не то вышло, а после уже махнул рукой на попытки — и пошел вторым путем) Может как-то немного не так пытался =) буду теперь в курсе