Я постараюсь быть коротким. Я хочу создать 3D FPS-игру для себя, которая может работать на нескольких платформах, но я решил, что для простоты лучше начать с чего-то, что предназначено исключительно для macOS. Я выбрал Objective- C, потому что
(a) Проекты Window Application в XCode можно кодировать только в Obj- C или Swift (так как мы имеем дело с Cocoa API) и
(б) Obj- C ближе к старой школе, чем Свифт.
Но прежде чем я научусь рисовать / визуализировать 2D-фигуры на холсте окна, написав код, я должен научиться вызывать окно приложения со свойствами, которые мне нравятся. Я часами проводил исследования и экспериментировал с кусками кода. Вот что я попробовал: я открываю с
#import <Cocoa/Cocoa.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
Затем я go с ...
1)
NSWindow *window = [[[NSApplication sharedApplication] windows] firstObject];
NSRect frame = [window frame];
frame.origin.x = 100;
frame.origin.y = 200;
frame.size.width = 100;
frame.size.height = 500;
[window setFrame: frame display: YES];
... и закрыть с ...
NSApplicationMain(argc, argv); // runs the win display function.
}
return (0) ;
}
Но без видимых изменений. Ничто действительно не сбрасывается. Поэтому вместо (1) я попытался ...
2)
NSWindow *window = [[[NSApplication sharedApplication] windows] firstObject];
NSPoint newOrigin;
newOrigin.x = 400;
newOrigin.y = 100;
[window setFrameOrigin : newOrigin];
Все еще ничего. Затем вместо (2) я попытался:
3)
NSWindowController* controller = [[NSWindowController alloc]
initWithWindowNibName:@"MainMenu"];
[controller showWindow:nil];
Отлично. Теперь он выплевывает что-то, чего я не понимаю, тем более, что я новичок в Obj- C:
2020-02-08 21:53:49.782197-0800
tryout_macApp2[14333:939233] [Nib Loading] Failed
to connect (delegate) outlet from
(NSWindowController) to (AppDelegate): missing
setter or instance variable
Я помню, как играли с ApplicationDelegate, с CGSizeMake (), et c ., но это только сделало опыт действительно затопляющим и расстраивающим. Ничего не случилось. Тогда есть NSView, NSViewController и другие классы, которые действительно ошеломляют и напрашиваются на вопрос: почему так много классов, когда все, что я хочу сделать, это переопределить предустановленный источник окна и размеры, предустановленные файлом MainMenu.xib ? (Кстати, этот проект является производным от проекта Window Application, предоставленного Xcode.)
Я действительно не могу придумать, что еще можно добавить, чтобы дать вам полную картину моего затруднительного положения, поэтому, если вы чувствуете, что-то отсутствует, пожалуйста, включите.
[Редактировать:] Переход к этапу 2 моего проекта здесь: Как нарисовать / нарисовать / визуализировать точку или раскрасить пиксель на холсте мое окно с несколькими строками в Obj- C на Ma c OS X с использованием Xcode? .