NSWindow исчезает - PullRequest
       2

NSWindow исчезает

1 голос
/ 08 января 2011

У меня установлен этот код для запуска при запуске приложения:

    NSRect rect = NSMakeRect(0, 0, 200, 50); //The location of the window
    NSWindow *win = [[NSWindow alloc] initWithContentRect:rect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO];
    [win setOpaque:NO];

    [win setLevel:NSFloatingWindowLevel];
    //[win setBackgroundColor:[NSColor clearColor]];

    //or

    NSView *myView = [[NSView alloc] initWithFrame: NSMakeRect(0, 0, 200, 50)];
    NSButton *myButton = [[NSButton alloc] initWithFrame:NSMakeRect(10, 5, 180, 40)];

    [myView addSubview: myButton];
    [win setHidesOnDeactivate:NO];

    [win setContentView: myView];

    [win orderFront: nil];

Он работает как положено (отображает кнопку в левом нижнем углу экрана) примерно на секунду, затем исчезает. Почему это исчезает? Управление памятью, или что-то еще, и как мне это исправить?

Ответы [ 2 ]

6 голосов
/ 08 января 2011

Во-первых, крайне странно создавать пользовательский интерфейс без простого использования Interface Builder. Это можно сделать, и для этого есть несколько причин, но их довольно мало и они далеко друг от друга.

Далее, сам по себе этот код недостаточно, чтобы сказать, что пошло не так. Создание пользовательского интерфейса программно порождает целый ряд вопросов; или нет? ... как настроен ваш цикл выполнения? ... у вас есть правильно настроенная оболочка приложения?

Как сказал Абизем, наиболее очевидным предположением будет то, что у вас включен GC, и вы не внедрили окно в какую-то глобальную переменную где-либо, прямо или косвенно. Он «просто работает» в стандартном приложении Какао, потому что экземпляры NSWindow внедряются через инфраструктуру приложения Какао (в частности, меню Windows).

4 голосов
/ 08 января 2011

Вы работаете с сборщиком мусора?

У вас есть iVar, который удерживает win? Это может быть из-за того, что из-под вас вывозится мусор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...