IBOutlet должен быть свойством и синтезируемый?

Тег directory необходим в конфигурации виртуального хоста ssl apache, аналогичного http-порту 80, чтобы разрешить переопределение правил перенаправления с использованием .htaccess wordpress.

<VirtualHost *:443>
    ..
    ..
    ..
    <Directory /var/www/html/domain.com/>
        DirectoryIndex index.php
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>
53
задан Ward Bekker 2 August 2009 в 23:00
поделиться

3 ответа

В Mac OS X IBOutlets подключаются следующим образом:

  1. Найдите метод с именем set :. Если он существует, вызовите его.
  2. Если метод не существует, найдите переменную экземпляра с именем , установите ее без сохранения .

В iPhone OS IBOutlets подключаются следующим образом:

  1. call [объект setValue: OutletValue forKey: @ ""]

Установленное значение для ключа ведет себя примерно так:

  1. Найдите метод с именем set :. Если он существует, вызовите его.
  2. Если метода не существует, найдите переменную экземпляра с именем , установите ее и сохраните ее.

Если вы используете свойство, вы попадете в случай « Найдите метод с именем set : ... » на обеих платформах. Если вы просто используете переменную экземпляра, у вас будет другое поведение при сохранении / освобождении в Mac OS X VS iPhone OS. Нет ничего плохого в использовании переменной экземпляра, вам просто нужно иметь дело с этой разницей в поведении при переключении между платформами.

Вот ссылка на полную документацию только по этой теме. https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.html#//apple_ref/doc/uid/10000051i-CH4-SW6

96
ответ дан 7 November 2019 в 08:33
поделиться

Конечный результат точно такой же, но вы должны помнить о нескольких вещах:

  • При использовании полей экземпляра в качестве выходов НЕ следует освобождать их в dealloc .

  • При использовании свойств с атрибутом (сохранить) необходимо освободить свойство в dealloc (используя self.property = nil или освободив поддерживающую переменную). Это делает его намного более прозрачным в отношении того, что происходит.

На самом деле все сводится к одному и тому же старому правилу: « вы должны освободить то, что вы выделяете / сохраняете ». Таким образом, если вы используете поле экземпляра в качестве выхода, вы не выделяете / не сохраняете его, поэтому освобождать его не следует.

4
ответ дан 7 November 2019 в 08:33
поделиться

В Mac OS X IBOutlets не сохраняются по умолчанию. Это противоположно поведению в iPhone OS: в iPhone OS, если вы не объявляете свойство, оно сохраняется, и вы должны освободить это свойство в методе dealloc . Кроме того, 64-разрядная среда выполнения может синтезировать переменные экземпляра, используя объявления свойств. Это означает, что когда-нибудь переменные экземпляра (с IBOutlet ) могут быть опущены.

По этим причинам более однородно и совместимо всегда создавать свойство и использовать только IBOutlet в собственности. К сожалению, он более подробный.

В вашем первом примере вам всегда нужно освободить выход в методе dealloc . Во втором примере вы должны освободить розетку только с iPhone OS.

12
ответ дан 7 November 2019 в 08:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: