我有一个使用XCode 7.2在Swift中开发的小型原型应用程序.该应用程序是作为带有故事板的Cocoa基于文档的应用程序创建的.因此,项目包含AppDelegate.swift,Document.swift并且Main.storyboard所有这些都与XCode生成的内容保持不变,并且ViewController.swift包含:
import Cocoa
import WebKit
class ViewController: NSViewController {
var webView: WKWebView {
return view as! WKWebView
}
override func loadView() {
view = WKWebView(/*frame: CGRect(x: 0, y: 0, width: 200, height: 200)*/)
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
webView.loadHTMLString("<html><body><p>Hello, World!</p></body></html>", baseURL: nil)
}
}
Run Code Online (Sandbox Code Playgroud)
我已覆盖loadView()直接创建a WKWebView并将其作为根视图分配给view属性ViewController,而不是加载故事板中定义的视图.
请注意,可以对该frame参数WKWebView进行评论,以证明该问题根源的不同行为.
甲WKWebView …
我需要确定带有相机外壳凹口的显示器上全屏应用程序窗口的尺寸。我使用的是 Mac Book Pro(14 英寸,2021 年),但我正在寻找通用技术。至关重要的是,我需要在启动之前从全屏应用程序本身外部执行此操作,以便我可以在应用程序测试/屏幕捕获场景中提前预测窗口位置。
报告显示,包括凹口区域的全屏尺寸为1512x982。报告的其他三个边缘为零。减去顶部插图得到的大小为 1512x950,但全屏应用程序(我使用 Chromium)报告的最大化窗口大小为 1512x945,这正是我们所期望的,因为它的宽高比为 16:10。例如,SwitchResX允许将分辨率设置为 1512x945 HiDPI 16:10 以忽略凹口区域。NSScreen framesafeAreaInsetstop = 32.0
auxiliaryTopLeftArea和auxiliaryTopRightArea返回的区域的高度也为32。
令人困惑的是,visibleFrame报告为 1512x944(而不是 945),但我不确定这一像素差异从何而来。
我可以调用哪些 API 来确定全屏应用程序区域的尺寸?
我有一个很大的numpy数组的有符号字节(dtype int8).它包含-128到+127范围内的全部值.我想dtype uint8通过向每个元素添加128来有效地将有效转换为无符号字节数组(),例如-128→0,0→128,+ 127→255 等.所以当然结果仍然适合于无符号字节.
给定正确的数字结果的简单元素添加,但dtype int16除了源数组之外,使用两倍的memory()创建结果数组,即使只需要结果元素的低字节.
>>> import numpy
>>> a = numpy.array( [-128, -1, 0, 1, 127 ], dtype=numpy.int8)
>>> b = a + 128
>>> b
array([ 0, 127, 128, 129, 255], dtype=int16)
Run Code Online (Sandbox Code Playgroud)
有没有办法控制dtype结果数组uint8?
另一种方法是就地修改值并将数据"转换"为新类型,如下所示:
>>> for i in xrange(0, 5):
... if a[i] < 0:
... a[i] -= 128
... elif a[i] >= 0:
... a[i] += 128
...
>>> a
array([ 0, 127, -128, …Run Code Online (Sandbox Code Playgroud) System.Array充当公共语言运行时(CLR)中所有数组的基类.根据这篇文章:
对于每个具体的数组类型,[]运行时添加了三种特殊方法:
Get/Set/Address.
事实上,如果我反汇编这个C#代码,
int[,] x = new int[1024,1024];
x[0,0] = 1;
x[1,1] = 2;
x[2,2] = 3;
Console.WriteLine(x[0,0]);
Console.WriteLine(x[1,1]);
Console.WriteLine(x[2,2]);
Run Code Online (Sandbox Code Playgroud)
进入CIL我得到了,
IL_0000: ldc.i4 0x400
IL_0005: ldc.i4 0x400
IL_000a: newobj instance void int32[0...,0...]::.ctor(int32,
int32)
IL_000f: stloc.0
IL_0010: ldloc.0
IL_0011: ldc.i4.0
IL_0012: ldc.i4.0
IL_0013: ldc.i4.1
IL_0014: call instance void int32[0...,0...]::Set(int32,
int32,
int32)
IL_0019: ldloc.0
IL_001a: ldc.i4.1
IL_001b: ldc.i4.1
IL_001c: ldc.i4.2
IL_001d: call instance void int32[0...,0...]::Set(int32,
int32,
int32)
IL_0022: ldloc.0
IL_0023: ldc.i4.2
IL_0024: ldc.i4.2 …Run Code Online (Sandbox Code Playgroud) 我正在使用Objective-C开始我的第一步,并且在XCode 4.1中遇到了一个轻微的问题,尽管是一个令人困惑的问题,即静态分析器(Product-> Analyze).我为有理数创建了一个简单的Fraction类,我分配并初始化为这样,
Fraction* f = [[[ Fraction alloc ] initWithNumerator:3 withDenomimator:5]
autorelease];
[ f print ];
Run Code Online (Sandbox Code Playgroud)
哪个print是NSLog用于显示分数的方法,一切正常.但是,如果我将alloc/ initconstruct分成两个语句(我意识到这是非惯用的 - 我只是想了解机器)并使用手册release而不是autorelease给出:
Fraction* f = [ Fraction alloc ]; // 1. Method returns an Objective-C object with
// a +1 retain count (owning reference)
[ f initWithNumerator:3 withDenomimator:5]; // 2. Object released
[ f print ]; // 3. Reference-counted object is used after it is released
[ f release ]; …Run Code Online (Sandbox Code Playgroud)