我找不到任何关于此的 SO 问题,但我遇到过两次这个问题。基本上,当我尝试通过 SPM 添加新包时,有时会收到以下错误:
The repository could not be found. Make sure a valid repository exists at the specified location and try again.
Run Code Online (Sandbox Code Playgroud)
例如,我正在尝试获取 PanModal ( https://github.com/slackhq/PanModal ),我得到以下信息:
特别有趣的是,虽然 Xcode 声称未找到 repo,但它可以在上一个屏幕上发现它的版本:
这里有什么问题?可以说 PanModal 刚刚获得了 SPM 支持,但那是 15 小时前,我认为这应该足够了。iiuc SPM 也是分散的,所以不应该有缓存或注册表的东西妨碍?
谢谢!
我从来没有真正理解何时使用@escaping。我理解它的作用(即转义闭包和非转义闭包之间的区别),但tbf我一直依赖Xcode来告诉我何时将修饰符添加到我的参数中。
我的问题是,为什么这种情况@escaping只适用于非零闭包?这就是我的意思:
func someFunc(someArg: Int, callback: @escaping (Error?) -> Void) {
DispatchQueue.global(qos: .background).async {
...
}
}
Run Code Online (Sandbox Code Playgroud)
在上面,如果我不添加@escapingXcode 会给我一个错误。但是,如果我callback像下面这样设置可选,则将结果保留 @escaping在 Xcode 错误中:
// This is wrong (Xcode complains about @escaping)
func someFunc(someArg: Int, callback: @escaping ((Error?) -> Void)?) {
DispatchQueue.global(qos: .background).async {
...
}
}
Run Code Online (Sandbox Code Playgroud)
这是为什么?谢谢你!
我在UIView子类中有类似的东西:
override var bounds : CGRect {
didSet {
somelayer.frame = bounds
}
}
Run Code Online (Sandbox Code Playgroud)
在相应的somelayer,我有这个:
override var bounds: CGRect {
didSet {
someFunction()
}
}
Run Code Online (Sandbox Code Playgroud)
现在,如果使用初始化视图super.init(frame: someFrame),则不会调用第一个块.这似乎表明该bounds物业并未设置frame.
如果我改变了第一块override var frame,那么它将被称为super.init(frame: someFrame),这将设置frame的somelayer.有趣的是,当发生这种情况时,会调用第二个块,这表明bounds并且frame同时设置(这也是我所期望的).
我在这里错过了什么吗?
我正在尝试使我的应用程序适应 iOS 13 暗模式,当我将 UIVisualEffectView 的模糊设置为 Storyboard 中的任何新模式(如材质)时,我收到警告:
System blur style before iOS 13.0
Run Code Online (Sandbox Code Playgroud)
我理解这一点,并且我可以在代码中使用版本检查来支持 iOS 13 和以前的版本。但是,我不确定如何在 Storyboard(我更喜欢)中执行此操作,并且当我在 iOS 12 设备中运行该应用程序时,它实际上呈现良好(正确回退)。
我怎样才能摆脱警告?
谢谢!
在iOS 13中,所有Apple应用程序中的搜索栏在右侧都有一个麦克风图标,允许语音输入。但是,当我创建系统搜索栏(或UISearchController)时,没有得到麦克风图标。我在Google和SO上进行搜索,但找不到答案-我们可以采用它吗?如果可以,怎么办?
我在Swift中有这个简单的代码:
override var bounds : CGRect {
didSet {
if (bounds != oldValue) {
var path = CGPathCreateMutable()
CGPathAddEllipseInRect(path, nil, bounds)
self.path = path
CGPathRelease(path)
}
}
}
Run Code Online (Sandbox Code Playgroud)
当图层bounds发生变化时,它应该绘制一个填充图层的圆圈.
这是从我的旧Objective-C代码移植而来的,它运行正常:
- (void)setBounds:(CGRect)bounds
{
if (CGRectEqualToRect(self.bounds, bounds)) return;
super.bounds = bounds;
CGMutablePathRef path = CGPathCreateMutable();
CGPathAddEllipseInRect(path, nil, bounds);
self.path = path;
CGPathRelease(path);
}
Run Code Online (Sandbox Code Playgroud)
但是,Swift代码崩溃了一些段错误.如果我不释放路径,那很好.如果我没有设置self.path = path,它也没关系(虽然没有任何东西会显示出来).如果两者都存在,它将崩溃.
我确实认为通过CGPathCreateMutable()需要释放创建的路径..而且似乎是ObjC的情况.有谁知道为什么它在Swift中不起作用?或者我做错了什么?
谢谢!
ios ×4
swift ×4
calayer ×2
cgpath ×1
ios-darkmode ×1
ios13 ×1
storyboard ×1
uisearchbar ×1
uiview ×1
xcode ×1