为什么[NSCursor IBeamCursor]是空的?



问题是[NSCursor IBeamCursor]为我返回null。你可以试试:

主要叮当声。m -framework AppKit

源:

#import <Foundation/Foundation.h>
#import <AppKit/AppKit.h>
#import <AppKit/NSWindow.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSCursor * c = [NSCursor IBeamCursor];
NSLog(@"IBeamCursor = %p %@", c, c);
}
return 0;
}

AppKit需要一定数量的初始化,以便它的许多类型与系统事件、应用生命周期、事件路由等相关联。看来NSCursor就是这些类型之一。

通常,AppKit应用程序调用NSApplicationMain()来触发初始化并运行应用程序,但这通常不适合命令行应用程序,因为NSApplicationMain也会触发加载主应用程序nib/storyboard,然后接管执行。

如果您需要此功能而不显示UI,您可以通过调用+[NSApplication sharedApplication]NSApplicationLoad()来触发此功能:

  • +sharedApplication:

    此方法还与窗口服务器建立连接并完成其他初始化。你的程序应该在main()中的第一个语句中调用这个方法;如果你用Xcode创建你的应用程序,这个调用是为你完成的。

  • NSApplicationLoad:

    通常在加载到主要是Carbon应用程序的插件中调用其他Cocoa代码之前调用这个函数。如果共享的NSApplication对象还没有初始化,这个函数会初始化它,并为Cocoa设置必要的事件处理程序。

调用其中任何一个都可以初始化您的NSCursor而不需要任何其他UI。

最新更新