问题是[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。