<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" >

  <channel>
    <title><![CDATA[Статьи]]></title>
    <link>https://habr.com/ru/users/huktocode/publications/articles/</link>
    <description><![CDATA[Хабр: статьи пользователя huktocode]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Sun, 26 Apr 2026 11:34:18 GMT</pubDate>
    
    
      <image>
        <link>https://habr.com/ru/</link>
        <url>https://habrastorage.org/webt/ym/el/wk/ymelwk3zy1gawz4nkejl_-ammtc.png</url>
        <title>Хабр</title>
      </image>
    

    
      
        
    
    <item>
      <title><![CDATA[Пишем реализацию Observer-а над KVO на objective-c]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/264823/</guid>
      <link>https://habr.com/ru/articles/264823/?utm_campaign=264823&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Добрый день, хабрачитатели. Спешу поделиться с вами опытом, недавно мной полученным.<br/>
<img src="https://habrastorage.org/files/0e5/095/5ee/0e50955ee966486a81f24c0c8ef80211.jpg"/><br/>
<br/>
<h5><b>Почему в этом есть нужда?</b></h5><br/>
Как вы, наверное, знаете — создание более менее внятных и серьезных приложений не может обойтись без грамотного проектирования. Одними из основных задач современного программирования — являются контроль над сложностью, требования создания гибких и расширяемых, изменяемых приложений. Из этого вытекают концепции ортогонального программирования, максимального уменьшения связности между классами, использования наиболее подходящих архитектурных решений (алсо грамотные подходы создания архитектуры проекта, подходы к проектированию классов). За многие человекочасы и человекодни мирового опыта всех разработчиков — были выработаны наиболее естественные и удачные подходы, названные паттернами проектирования… А подходы к проектированию классов — могут в некоторой степени изменяться, в зависимости от используемого языка программирования и требуемых свойств объекта. Описываемый сегодня мной паттерн является одним из моих самых любимых (и вообще достаточно значимый), а именно встречайте:… &quot;<a href="https://ru.wikipedia.org/wiki/%D0%9D%D0%B0%D0%B1%D0%BB%D1%8E%D0%B4%D0%B0%D1%82%D0%B5%D0%BB%D1%8C_(%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)">Observer</a>&quot; (по-русски — Наблюдатель). Исходя из последних двух предложений — вытекает название этой статьи.<br/>
 <a href="https://habr.com/ru/articles/264823/?utm_campaign=264823&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Sat, 15 Aug 2015 13:29:25 GMT</pubDate>
      <dc:creator><![CDATA[HUktoCode]]></dc:creator>
      <category><![CDATA[Objective C]]></category><category><![CDATA[UML Design]]></category><category><![CDATA[Анализ и проектирование систем]]></category><category><![CDATA[Проектирование и рефакторинг]]></category><category><![CDATA[iOS]]></category>
      <category><![CDATA[Observer]]></category><category><![CDATA[Наблюдатель]]></category><category><![CDATA[паттерн наблюдатель]]></category><category><![CDATA[observer pattern]]></category><category><![CDATA[KVO]]></category><category><![CDATA[Key-value observing]]></category><category><![CDATA[iOS]]></category><category><![CDATA[ios разработка]]></category><category><![CDATA[XCode]]></category><category><![CDATA[objective-c]]></category><category><![CDATA[design patterns]]></category><category><![CDATA[NSHashTable]]></category><category><![CDATA[хэш-таблица]]></category><category><![CDATA[синглтон]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[UINavigationController и с чем его едят: базовые принципы, субклассирование, защита от двойных переходов и многое другое]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/263069/</guid>
      <link>https://habr.com/ru/articles/263069/?utm_campaign=263069&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Я не претендую на истину в последней инстанции, но и в разработке кое-чего все-таки смыслю. Посему решил поделиться с вами некоторыми результатами проделанной работы, поделиться некой компиляцией знания о навигационных контроллерах, так сказать. Может это и поможет какой-либо из бренных оболочек, способных именоваться далее моими читателями, создать более совершенный программный продукт.<br/>
<br/>
Предметом исследования будет навигационный контроллер, а именно класс UINavigationController из стандартного фреймворка UIKit для работы с интерфейсом, который нам любезно предоставляет Apple.<br/>
<br/>
<h4>Вкратце о...</h4><br/>
«Контроллер» в данном случае — некий класс, инкапсулирующий логику, согласно концепции (еще называемой паттерном) <a href="https://ru.wikipedia.org/wiki/Model-View-Controller">MVC</a>. <br/>
<br/>
<img src="https://habrastorage.org/files/ec6/282/c34/ec6282c340604845bb93e94407745c4e.png"/><br/>
<br/>
<img src="https://habrastorage.org/files/41a/537/33f/41a53733f3174ee7aa6161bd58e2fed6.jpg"/><br/>
<br/>
Навигационный контроллер (<a href="https://developer.apple.com/library/ios/documentation/UIKit/Reference/UINavigationController_Class/">UINavigationController</a>) — класс высокого уровня абстракции, содержит в себе иерархию других контроллеров представлений, между представлениями(вьюшками/UIView) которых способен осуществлять навигацию (в чем его, собственно, основная задача и состоит!), передавая в нужный момент управление соответствующему контроллеру. Кроме этого — композиционно содержит в себе навигационную панель (UINavigationBar), которую отображает на экране, и соответствующим образом меняет содержимое данной панели: в зависимости от активного контроллера. <br/>
 <a href="https://habr.com/ru/articles/263069/?utm_campaign=263069&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Mon, 20 Jul 2015 09:08:00 GMT</pubDate>
      <dc:creator><![CDATA[HUktoCode]]></dc:creator>
      <category><![CDATA[Objective C]]></category><category><![CDATA[Разработка мобильных приложений]]></category><category><![CDATA[iOS]]></category>
      <category><![CDATA[UI]]></category><category><![CDATA[ios]]></category><category><![CDATA[objective-c]]></category><category><![CDATA[uinavigationcontroller]]></category><category><![CDATA[uinavigationbar]]></category><category><![CDATA[uinavigationcontroller subclass]]></category><category><![CDATA[uiviewcontroller]]></category><category><![CDATA[навигация]]></category><category><![CDATA[навигационный контроллер]]></category><category><![CDATA[подкласс]]></category><category><![CDATA[uinavigationcontrollerdelegate]]></category><category><![CDATA[uinavigationbardelegate]]></category><category><![CDATA[storyboard segue]]></category><category><![CDATA[delegate]]></category><category><![CDATA[target-action]]></category><category><![CDATA[user interaction]]></category><category><![CDATA[double segues]]></category><category><![CDATA[double segues prevent]]></category><category><![CDATA[multiple segues]]></category><category><![CDATA[делегирование]]></category><category><![CDATA[паттерны]]></category><category><![CDATA[пользовательские события]]></category><category><![CDATA[защитное программирование]]></category><category><![CDATA[MVC]]></category><category><![CDATA[hierarchical structure]]></category><category><![CDATA[иерархическая структура]]></category><category><![CDATA[UINavigationItem]]></category><category><![CDATA[UIStoryboardSegue]]></category><category><![CDATA[мультитач]]></category><category><![CDATA[отключение мультитача]]></category><category><![CDATA[multitouch]]></category><category><![CDATA[multitouch disabling]]></category>
    </item>
  

  

  

	
  

  

  

      

      

      

    
  </channel>
</rss>
