2015-03-25 2 views
1

У меня есть NSWindow, который можно закрыть и открыть (я позвонил [setReleasedWhenClosed: NO]). Как проверить, открыто ли оно или закрыто программно?Как проверить, открыт ли NSWindow

Я прочитал документ и Googled, но не вижу разумного способа сделать это. [isVisible] устарел. [occlusionState] не то, что мне нужно. Я работал с ним с помощью уведомлений, но я не могу поверить, что нет никакого свойства или метода на NSWindow для этого

ответ

6

-[NSWindow isVisible] на самом деле не рекомендуется.

Для 10.10 SDK Apple прошла и конвертировала кучу неформальных свойств в объявленные свойства. Неформальное свойство - это одно, для которого есть только аксессоры, объявленные, возможно, только методом геттера. Объявленное свойство использует @property.

Как следствие, они сняли что-то вроде:

- (BOOL) isVisible; 

и добавил:

@property (getter=isVisible, readonly) BOOL visible; 

Обратите внимание, что оба еще предполагают существование -isVisible геттер с BOOL типом возвращаемого значения.

Инструменты, которые они используют для создания документации из изменений в своих заголовках, заставляют документацию утверждать, что -isVisible устарел, но это неправильно.

Обратите внимание, что -isVisible сообщает false для окна, которое минимизировано или является «открытым», но в скрытом приложении.

+0

Я не вижу этого в документации для NSWindow. – dented42

+0

Вы не видите что? Свойство 'visible'? Да, я знаю. Я говорю вам, что документация глючит. Посмотрите на объявление класса NSWindow (например, Command-click на 'NSWindow' в вашем коде). Или просто напишите код, который использует свойство 'visible' и/или' -isVisible', и обратите внимание, что компилятор не генерирует никаких предупреждений об отказе (или любых других предупреждений). –

+0

Спасибо за подробное описание (хотя и разочарование!;). Я не принял это как ответ, потому что предложение Шейна ближе к тому, что я хотел - но я бы хотел, чтобы в этом случае можно было выбрать два ответа! – Richard

Смежные вопросы