在什么情况下[[NSScreen mainScreen] visibleFrame]会返回null?

Ste*_*eod 2 cocoa objective-c

我想获得主屏幕的尺寸,所以我使用这个片段:

NSLog(@"mainScreen frame = %@", [[NSScreen mainScreen] visibleFrame]);
Run Code Online (Sandbox Code Playgroud)

这是打印

mainScreen frame = (null)
Run Code Online (Sandbox Code Playgroud)

之前它是打印我的主显示器的预期尺寸.

这有什么可能的原因?

dan*_*ass 9

这里的问题是你正在遇到Objective-C Cocoa编程中相对较少的非对象之一.

"visibleFrame"的结果是NSRect 结构,而不是对象.要使它在NSLog行中有意义地显示,您必须执行以下操作:

NSString* frameAsString = NSStringFromRect([[NSScreen mainScreen] visibleFrame]);
NSLog(@"mainScreen frame = %@", frameAsString);
Run Code Online (Sandbox Code Playgroud)

有许多辅助函数可以将许多这些结构对象转换为字符串并返回,例如NSStringFromPoint,NSStringFromRange等.