iboutlet и ibaction

<p>какова цель использования ibaction и iboutlet в кодировании objective-c для iphone, имеет ли какое-то значение, если я их не использую?</p>

<p><code>ibaction</code> и <code>iboutlet</code> - это макросы, определенные для обозначения переменных и методов, на которые можно ссылаться в интерфейсном разработчике.</p><p><code>ibaction</code> преобразуется в <code>void</code>, а <code>iboutlet</code> ничего не разрешает, но они означают для xcode и interface builder, что эти переменные и методы можно использовать в interface builder для связи элементов ui с вашим кодом.</p><p>если вы вообще не собираетесь использовать interface builder, то они вам не нужны в вашем коде, но если вы собираетесь его использовать, вам нужно указать <code>ibaction</code> для методов, которые будут использоваться в ib и <code>iboutlet</code> для объектов, которые будут использоваться в ib.</p>

<p>традиционный способ пометить метод так, чтобы он появился в интерфейсном разработчике, и вы можете перетащить соединение с ним, состоял в том, чтобы заставить метод возвращать тип ibaction. однако, если вместо этого вы сделаете свой метод недействительным (ibaction равен # define'd быть пустым) и предоставите аргумент (id), метод все равно будет виден. это обеспечивает дополнительную гибкость, все </p><p>все 3 из них видны из интерфейсного разработчика:</p><pre><code>-(void) somemethod1:(id) sender; -(ibaction) somemethod2; -(ibaction) somemethod3:(id) sender; </code></pre><p>см. руководство пользователя интерфейсного разработчика apple для деталей, особенно раздел, озаглавленный интеграция xcode.</p>

<p>вам необходимо использовать iboutlet и ibaction, если вы используете конструктор интерфейса (следовательно, префикс ib) для компонентов gui. iboutlet необходим для связи свойств вашего приложения с компонентами в ib, а ibaction используется для того, чтобы ваши методы могли быть связаны с действиями в ib. </p><p>например, предположим, что вы определяете кнопку и метку в ib. чтобы динамически изменить значение метки, нажав кнопку, вы определите действие и свойство в своем приложении, например:</p><pre><code>uilabel iboutlet *mylabel; -(ibaction) pushme; </code></pre><p>затем в ib вы должны связать mylabel с меткой и подключить метод pushme с помощью кнопки. вам нужны ibaction и iboutlet, чтобы эти соединения существовали в ib.</p>

<p>интерфейсный разработчик использует их, чтобы определить, какие элементы и сообщения могут быть «подключены» к элементам управления интерфейса, которые вы используете в своем окне/представлении.</p><p>iboutlet и ibaction присутствуют исключительно как маркеры, которые интерфейсный разработчик ищет, когда он анализирует ваш код во время разработки, они не оказывают никакого влияния на код, сгенерированный компилятором.</p>

<p>outlet - это ссылка из кода на пользовательский интерфейс. если вы хотите показать или скрыть элемент пользовательского интерфейса, если вы хотите получить текст текстового поля или включить или отключить элемент (или сотню других вещей), вы должны определить выход этого объекта в источниках и связать этот выход через «интерфейсный объект» к элементу пользовательского интерфейса. после этого вы можете использовать выход, как и любую другую переменную в вашем коде.</p><p>ibaction - специальный метод, запускаемый объектами пользовательского интерфейса. интерфейсный разработчик распознает их.</p><pre><code>@interface controller { iboutlet id textfield; // links to textfield ui object } - (ibaction)doaction:(id)sender; // e.g. called when button pushed </code></pre><p>для получения дополнительной информации, пожалуйста, обратитесь <a href="http://developer.apple.com/library/ios/#documentation/uikit/reference/uikitconstantsreference/reference/reference.html">apple docs</a> </p>

<p>заработал на диаграмме, глядя на кодирование значения ключа, подумал, что это может кому-то помочь. это помогает понять, что такое iboutlet.</p><p>глядя на поток, можно увидеть, что iboutlets существуют только для того, чтобы сопоставить имя свойства с именем элемента управления в файле nib.</p><p> <a href="https://i.stack.imgur.com/he7wd.png"> <img src="https://i.stack.imgur.com/he7wd.png" alt="how nib file is loaded, screenshot of matt's online book for ios6"> </a> </p>

<p>ibaction и iboutlets используются для соединения вашего интерфейса, созданного в интерфейсном разработчике, с вашим контроллером. если вы не используете interface builder и полностью не строите свой интерфейс в коде, вы можете создать программу, не используя их. но на самом деле большинство из нас использует interface builder, когда вы хотите, чтобы в вашем интерфейсе появилась некоторая интерактивность, вам придется использовать ibactions и iboutlets.</p>

<p>когда вы используете interface builder, вы можете использовать connections inspector для настройки событий с помощью обработчиков событий, предполагается, что обработчиками событий являются функции, имеющие модификатор ibaction. представление может быть связано со ссылкой для того же типа и с модификатором iboutlet.</p>

<p>iboutlet</p><ul> <li>это<strong> свойство </strong>. </li> <li>когда файл nib (ib) загружен, он становится частью инкапсулированных данных, которые подключаются к переменной экземпляра. </li> <li>каждое соединение разархивировано и восстановлено.</li> </ul><p>ibaction </p><ul> <li><strong> атрибут </strong>указывает, что метод является действием, к которому вы можете подключиться из раскадровки в интерфейсном разработчике.</li> </ul><p>@ - динамический шаблон ib - интерфейсный разработчик</p>