我的下面的代码与swift 4工作得很好但升级到swift 4.2后我收到了这个错误,我浪费了3个小时搜索问题但是失败了.如果有人可以指导我如何解决这个问题.
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if postType == 2 {
let image = info[convertFromUIImagePickerControllerInfoKey(UIImagePickerController.InfoKey)] as! UIImage
mediaType.image = image
} else {
videoURL = info[convertFromUIImagePickerControllerInfoKey(UIImagePickerController.InfoKey.mediaURL)] as? URL
do {
let asset = AVURLAsset(url: videoURL!, options: nil)
let imgGenerator = AVAssetImageGenerator(asset: asset)
imgGenerator.appliesPreferredTrackTransform = true
let cgImage = try imgGenerator.copyCGImage(at: CMTime.init(value: 0, timescale: 1), actualTime: nil)
let thumbnail = UIImage(cgImage: cgImage)
self.mediaType.image = thumbnail
} catch {
print("*** Error generating thumbnail: \(error)")
} …Run Code Online (Sandbox Code Playgroud) 我得到了大量的崩溃报告给了Crashlytics.这只发生在iOS 12上,我不知道如何重现这一点.也许用户在WKWebView上并尝试从提示中输入密码31 SafariServices 0x21d216740 __107+[_SFAutomaticPasswordInputViewController inputViewControllerWithAutoFillContext:passwordRules:completion:]_block_invoke.29 + 104
如果有人有类似的崩溃或想法,我们非常感谢.
更新:此问题正在跟踪:https://github.com/firebase/firebase-ios-sdk/issues/2283感谢Igor
Crashed: com.apple.main-thread
0 libsystem_kernel.dylib 0x207743df8 __abort_with_payload + 8
1 libsystem_kernel.dylib 0x20773d838 abort_with_payload_wrapper_internal + 100
2 libsystem_kernel.dylib 0x20773d7d4 abort_with_payload_wrapper_internal + 34
3 libobjc.A.dylib 0x206d7d4b4 _objc_fatalv(unsigned long long, unsigned long long, char const*, char*) + 112
4 libobjc.A.dylib 0x206d7d40c __objc_error + 42
5 libobjc.A.dylib 0x206d94af0 weak_entry_insert(weak_table_t*, weak_entry_t*) + 314
6 libobjc.A.dylib 0x206d95a60 objc_initWeak + 360
7 UIKitCore 0x23457508c -[UIViewController viewDidMoveToWindow:shouldAppearOrDisappear:] + 1628
8 UIKitCore 0x234fcaff8 -[UIView(Internal) …Run Code Online (Sandbox Code Playgroud) 这不是一个问题,但我在这里张贴,希望能够拯救别人的理智(我只花了一天的时间来解决这个问题).我已经发现了iOS 12.0+中出现的内存泄漏,它影响了WKWebView和UIWebView.只要您实例化2个Web视图中的任何一个,就会出现泄漏.Instruments将漏洞识别为来自JavaScriptCore,我猜这是为什么它同样会影响两个webview.
当我决定尝试更旧的iOS版本(11.4 - 12.0之前的版本)时,我试图弄清楚我做错了什么,我注意到泄漏已经消失了.我每次都可以重现这一点.
要重现,您需要做的就是在类上分配webview的实例.
let webview = WKWebView()
Run Code Online (Sandbox Code Playgroud)
要么
let webview = UIWebView()
Run Code Online (Sandbox Code Playgroud)
马上,您会注意到iOS 12.0/12.1上有4个泄漏,如果您在iOS 11.4上运行代码,这些泄漏将不再存在.有4个单独的泄漏; 3 x 96字节和1 x 128字节.
我通过BugReporter向Apple提交了一个错误,在Openradar上重复:https://openradar.appspot.com/radar ? id = 6132657108811776
我RPSystemBroadcastPickerView用来显示一个选择器视图,用户可以从中选择一个广播服务来记录屏幕.根据文档,preferredExtension应该允许我设置选择器显示哪个广播扩展.
代码非常简单:
let broadcastPickerView = RPSystemBroadcastPickerView(frame: CGRect(x: 0, y: 0, width: 51, height: 51))
view.addSubview(broadcastPickerView)
broadcastPickerView.preferredExtension = "com.milan.nosal.broadcast-extension"
broadcastPickerView.backgroundColor = .clear
broadcastPickerView.showsMicrophoneButton = false
Run Code Online (Sandbox Code Playgroud)
"com.milan.nosal.broadcast-extension"我希望选择器提供的扩展的包标识符在哪里(我多次检查其正确性).
但是,当点击控件时,弹出窗口首先显示空选:
关闭它后,再次点击控件,它会显示正确的扩展名.这仅在应用程序安装(或重新安装)后才会发生,在显示后,它会始终显示.
这是iOS 12测试版的错误,还是我做错了什么?我可以"预注册"扩展程序来解决这个问题吗?
编辑:
发布应用程序后,我们遇到了与用户相同的问题,但这次甚至没有多次点击控件有帮助 - 选择器总是空的!似乎扩展安装正确,因为它可以从控制中心启动.
现在正式发布.
我已将二进制文件上传到 iTunes Connect,但收到了这封电子邮件:
我们发现您的应用程序“xxx”最近交付的一个或多个问题。您的交付成功,但您可能希望在下次交付时更正以下问题:
无效的 Siri 支持 - 自定义意图的本地化描述:“xxxxxx”未找到语言环境:zh_CN
无效的 Siri 支持 - 自定义意图的本地化标题:“xxxxxx”未找到区域设置:zh_CN
我在 Intents.strings 中为“zh_CN”语言添加了本地化的标题和描述,但没有任何效果。 图片
有人能告诉我如何解决吗?
尝试使用RPScreenRecorder开始屏幕录制.我收到以下错误:
录制因多任务处理和内容调整大小而中断
func startRecording() {
let recorder = RPScreenRecorder.shared()
recorder.startRecording(handler: { (error) in
if let unwrappedError = error {
print(unwrappedError.localizedDescription)
} else {
}
})
}
Run Code Online (Sandbox Code Playgroud)
在iOS 12.0之前一切正常.从更新我得到上面的错误.
我在为Core Motion实例化我的CMMotionManager对象时遇到了崩溃.这是在运行iOS 12.0.1的iPhone X上.
我可以通过单视图应用程序使用以下视图控制器可靠地重现这一点.
import UIKit
import CoreMotion
class ViewController: UIViewController {
var motion: CMMotionManager?
override func viewDidLoad() {
super.viewDidLoad()
// This causes a crash on iPhone Xs, iOS 12.0.1
self.motion = CMMotionManager()
}
}
Run Code Online (Sandbox Code Playgroud)
完整示例项目位于https://github.com/doctorcolinsmith/motiontestcrash/tree/master
运行上面的代码时,我在调试器中输出以下输出的线程上出现故障.
=================================================================
Main Thread Checker: UI API called on a background thread: -[UIApplication applicationState]
PID: 3634, TID: 630341, Thread name: com.apple.CoreMotion.MotionThread, Queue name: com.apple.root.default-qos.overcommit, QoS: 0
Backtrace:
4 libobjc.A.dylib 0x000000019b0d3894 <redacted> + 56
5 CoreMotion 0x00000001a19337a4 CoreMotion + 305060
6 CoreMotion 0x00000001a1933cd8 …Run Code Online (Sandbox Code Playgroud) 我有一个有效但已弃用的工作代码:
这部分很好:
let archived = try? NSKeyedArchiver.archivedData(withRootObject: [defaultRecord] as NSArray, requiringSecureCoding: false)
Run Code Online (Sandbox Code Playgroud)
这是已弃用的:
let records = NSKeyedUnarchiver.unarchiveObject(with: unarchivedObject as Data) as? [Record]
Run Code Online (Sandbox Code Playgroud)
'unarchiveObject(with:)' 在 iOS 12.0 中被弃用:使用 +unarchivedObjectOfClass:fromData:error: 代替
听起来很简单,但我无法找到一种方法来使用建议的方法而不会在我尝试的每个组合中都出错。
任何工作示例?