在更新Xcode之前,我的项目构建良好。
但是现在,我无法再构建该项目。使用Swift 5时,构建项目永远不会完成。它停止在“构建70个100任务”中,并且永远不会完成。这些数字也不总是相同的,但是它永远不会完成。
如果我尝试使用Xcode将项目从Swift 4.2转换为Swift 5,它同样也不会完成转换。
如果我尝试更改工具链以使用Swift 4.2.1版本的工具链,则代码可以成功编译,但是在运行时我会立即崩溃:
dyld: Symbol not found: _$SBOWV
Referenced from: /Users/compc/Library/Developer/Xcode/DerivedData/Swift_Coder-hczsehpbafcwkfgwyameucznmhsp/Build/Products/Debug/Swift Coder.app/Contents/MacOS/../Frameworks/SavannaKit.framework/Versions/A/SavannaKit
Expected in: /usr/lib/swift/libswiftCore.dylib
in /Users/compc/Library/Developer/Xcode/DerivedData/Swift_Coder-hczsehpbafcwkfgwyameucznmhsp/Build/Products/Debug/Swift Coder.app/Contents/MacOS/../Frameworks/SavannaKit.framework/Versions/A/SavannaKit
Run Code Online (Sandbox Code Playgroud)
我尝试清理项目并删除派生数据,但似乎都无法正常工作。
如果使用Xcode 10.1,则该项目将继续构建并正常运行。
我有这段代码:
@available(*, deprecated:3.0, message:"Use activate().")
public func install() {
self.activate()
}
Run Code Online (Sandbox Code Playgroud)
而且由于我已经升级到swift5和xcode 10.2,所以我得到以下警告:
非特定平台“ *”的“可用”属性中的版本号超出预期
并固定为:
将':3.0'替换为''
这是什么警告?它说什么?
我有一个非常奇怪的问题,似乎是由最新的Xcode 10.2编译引起的。
我注意到我的应用启动时间变得非常糟糕(慢了3倍),这仅是由于使用Xcode 10.2(.x)构建并在iOS 12.2上运行而引起的。当在较旧的iOS(12.0)上运行或使用针对iOS 12.2的Xcode 10.1编译时,相同的代码修订版可以正常运行。
延迟甚至发生在main()被调用之前。从根本上说Bootstrapping com.myapp.something with intent foreground-interactive,控制台说出与main()被叫之间的延迟是所测量的时间开始增加的地方。
应用设置(快速):
这是发生了什么
旧代码修订版(Swift 4.2)-较旧的版本之一,可以正常工作,然后使用Xcode 10.1进行编译
该表显示了使用Xcode 10.2进行编译对应用启动时间(开始出现状态栏的第一帧的那一刻)的影响。
| | iOS 12.0 | iOS 12.2 |
|------------|----------|----------|
| Xcode 10.1 | 1x | 1.25x |
| Xcode 10.2 | 1x | 3x | <--
Run Code Online (Sandbox Code Playgroud)
上次OK发行版(iOS 12.0 / Xcode 10.1)的启动时间被认为是1倍,其余时间是相对于它的。我们在这里谈论秒(减去3s->接近9s)。
仅在全新安装时才会发生此重大延迟。随后的每次启动都很快。
最新代码(Swift 5) -所有代码均已迁移到Swift 5,所有CocoaPods已更新为最新的Swift 5兼容版本,项目已更新为Xcode 10.2设置
与Swift 5之前的情况非常相似。因此,Swift 5本身似乎不是问题。
编辑1:
时间分析器发现初始化时间大大变慢了。 …
背景
我有一个使用AVFoundation的应用程序以拥有自定义相机。这发生在中OCRViewController。当我拍照时,会将捕获的图片发送到其他视图ImagePreviewViewController。
我使用Xcode 10.2.1 (10E1001)与Swift 5
目标
我想实现的是将的方向锁定ImagePreviewViewController为图像的原始方向。我已经知道如何获取图像的方向,但是我无法锁定视图的方向。
我得到这样的图像旋转: let imageOri = capturedImage?.imageOrientation
我尝试了什么?
我尝试了其他来源的公认答案:
在https://developer.apple.com/documentation/uikit/uiviewcontroller#//apple_ref/occ/instm/UIViewController/supportedInterfaceOrientations下的“ 处理视图旋转 ” 下阅读文档,内容如下:
在编写此查询时,我还尝试了许多建议的解决方案,但是,大多数方法似乎使用以下方法(或它的一种变体),它对我不起作用。
override func supportedInterfaceOrientations() -> Int {
return Int(UIInterfaceOrientationMask.Portrait.rawValue)
}
override func shouldAutorotate() -> Bool{
return false
}
override func preferredInterfaceOrientationForPresentation() -> UIInterfaceOrientation {
return UIInterfaceOrientation.Portrait
}
Run Code Online (Sandbox Code Playgroud)
从iOS 8开始,不推荐使用所有与旋转相关的方法。相反,旋转被视为视图控制器视图大小的变化,因此使用viewWillTransition(to:with :)方法进行报告。
但是,我不确定如何从这里开始。
有趣的代码片段
我的中使用了以下方法OCRViewController,在此实例化ImagePreviewViewController并附加捕获的图像。
func displayCapturedPhoto(capturedPhoto : UIImage) {
let imagePreviewViewController = storyboard?.instantiateViewController(withIdentifier: "ImagePreviewViewController") …Run Code Online (Sandbox Code Playgroud) 因此,昨天我将iPhone 6S更新为iOS13.1的第二个开发版本,突然间我的应用程序(在应用程序商店中显示为0崩溃显示在Connect应用程序上)在我的设备上运行时不起作用。但是,它确实可以在Xcode的模拟器中使用。我使用的是Xcode 10.3,但Xcode 11 Beta的功能相同,模拟器也可以在Beta上运行(尽管它们以其他方式破坏了我的应用程序)。
当我点击一个按钮时,应该使我进入所点击按钮的详细视图,但我收到此错误:
Thread 1: EXC_BAD_ACCESS (code=1, address=0x48)
Run Code Online (Sandbox Code Playgroud)
这段代码在哪
// sets up the audio for use in the app --------------------------------------------------------------//
let GetReady = Bundle.main.path(forResource: “Get_Ready_up9db”, ofType: “m4a”)
// this tells the compiler what to do when action is received
do {
audioPlayer_GetReady = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: GetReady! )) // Thread 1: EXC_BAD_ACCESS (code=1, address=0x48)
try AVAudioSession.sharedInstance().setCategory(AVAudioSession.Category(rawValue: convertFromAVAudioSessionCategory(AVAudioSession.Category.ambient)))
try AVAudioSession.sharedInstance().setActive(true)
}
catch{
print(error)
}
Run Code Online (Sandbox Code Playgroud)
我不知道为什么突然这么做,但是因为我不知道为什么,我有点害怕,因为我确定iOS 13很快就会问世。
请帮忙!
我通常设置视图的前导,尾随约束。我将其高度设置为静态325。对于底部约束,我设置了2个约束1.将主视图的底部约束设置为视图的底部约束。2.用主视图的底部约束到视图的顶部约束。现在,根据用户的操作,我只显示带有动画的隐藏视图。因此,当视图显示在屏幕上且应用程序进入后台时,视图的约束条件将自动更改,视图将被隐藏。仅在iOS 13设备中会发生此问题。
我尝试更新其对viewWillAppear()的约束,但是在iOS 13中,当从后台激活应用程序时,也不会调用ViewControllers的viewWillAppear。我也不认为,这是更新约束的好主意。
class ViewController: UIViewController {
@IBOutlet weak var topConstraint: NSLayoutConstraint!
@IBOutlet weak var bottomConstraint: NSLayoutConstraint!
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 3) {
self.topConstraint.isActive = false
self.bottomConstraint.isActive = true
UIView.animate(withDuration: 0.3) {
self.view.layoutIfNeeded()
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
当应用程序状态从前台更改为后台时,我不想更改或更新约束,反之亦然。
请同样帮我。
TIA
我有一个基本的 SwiftUI 组件。
struct PopupModal: View {
var body: some View {
Text("Hello, World!")
}
}
struct PopupModal_Previews: PreviewProvider {
static var previews: some View {
PopupModal()
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个UIViewController我想实例化这个组件并显示它。
private let _popup = PopupModal()
private lazy var _popupController = UIHostingController(rootView: _popup)
override public func viewDidLoad() {
// ...
self.addChild(_popupController)
view.addSubview(_popupController.view)
_popupController.didMove(toParent: self)
}
override public func viewDidLayoutSubviews() {
// How do I make this automatic or as a function of the size of _popup?
let popupHeight = …Run Code Online (Sandbox Code Playgroud) 这是我的第一篇文章。我是日本的 iOS 工程师(这个月刚入职)。
我在 Swift 5 中的removeObserver方法有问题NotificationCenter。
我使用闭包类型向 ViewController (VC) 添加了观察者addObserver。当 VC 的取消初始化调用时,我想删除这个观察者。
我NotificationCenter.default.removeObserver(self)用VC的deinit方法写的。但是,这似乎对我不起作用。
有什么问题???
此外,如果我的代码有内存泄漏问题,请告诉我如何修复它。
这是我的一段代码。
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(forName: UIApplication.didBecomeActiveNotification, object: nil, queue: nil) { [weak self] notification in
guard let self = self else { return }
self.loadWeather(notification.object)
}
}
deinit {
print(#function)
print("ViewController died")
NotificationCenter.default.removeObserver(self)
}
}
Run Code Online (Sandbox Code Playgroud) 如何检测用户是否已在 iOS 14 的应用程序中授予本地网络权限?如果用户拒绝权限并重定向到操作系统设置以授予权限,我必须显示错误屏幕。Apple 是否提供了任何方法来查找位置权限?
当我在模拟器或设备上运行应用程序并尝试在调试期间使用 PO 命令时。Xcode 抛出错误而不是打印值。这是在我更新 Xcode 12 之后发生的。
错误:虚拟文件系统覆盖文件
/all-product-headers.yaml' 未找到
错误:无法 IRGen 表达。请检查上述错误消息以了解可能的根本原因。
对此有什么解决方案?任何帮助,将不胜感激。