Как я могу создать GUI и реагировать на события Cocoa программно?

Вы можете удалить часть отражения и просто передать типы вручную. Отражение - медленная задача, и вы не можете ожидать быстрого опыта с чем-то, что использует отражение, но, поскольку это только для первого соединения, мне лично было бы все равно, если не так важно начать очень быстро.

9
задан Cliff Ribaudo 24 February 2014 в 12:46
поделиться

3 ответа

Необходимо вызвать - [NSApplication, выполненный] вместо - [[NSRunLoop currentRunLoop], выполненный]. Причина должна быть ясной при рассмотрении базовой структуры метода:

- (void)run
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    [self finishLaunching];

    shouldKeepRunning = YES;
    do
    {
        [pool release];
        pool = [[NSAutoreleasePool alloc] init];

        NSEvent *event =
            [self
                nextEventMatchingMask:NSAnyEventMask
                untilDate:[NSDate distantFuture]
                inMode:NSDefaultRunLoopMode
                dequeue:YES];

        [self sendEvent:event];
        [self updateWindows];
    } while (shouldKeepRunning);

    [pool release];
}

NSApplication инкапсулирует много о том, как получить событие, как диспетчеризировать их и как обновить окна.

9
ответ дан 4 December 2019 в 15:26
поделиться

Я узнал, как создать окно в Какао программно …

Почему? Почему не только делают перо?

Окно не реагирует на запрос Выхода или нажатие кнопки.

Как Вы вышли бы из окна? Это не Windows 3; приложения могут иметь несколько окон на Mac OS X. По сути, закрытие окна и выход из приложения являются отдельными действиями.

[[NSRunLoop currentRunLoop], выполненный];

Кроме редких обстоятельств, выполняя цикл выполнения задание NSAPPLICATION, и необходимо оставить это ему. Использовать NSApplicationMain или -[NSApplication run] сказать приложению работать.

2
ответ дан 4 December 2019 в 15:26
поделиться

Превосходный вопрос. Я думаю, что Matt Gallagher уже ответил на это, но если Вы хотите пойти далее с этим, необходимо будет копаться в документации обработки событий Apple. Примите во внимание, что выполнение всего программно потребует основательного понимания основных принципов какао.

2
ответ дан 4 December 2019 в 15:26
поделиться