根据@matt 使用的这个精彩答案dispatch_after,我在操场上尝试了代码,它工作正常(没有错误).但是,当我尝试执行向后兼容时DispatchTime.now(),iOS 10只有这样才可用:
func delay( _ delay: Double, closure: () -> ()){
guard #available(iOS 10, *) else {
dispatch_after(
dispatch_time(
DISPATCH_TIME_NOW,
Int64(delay * Double(NSEC_PER_SEC))
),
dispatch_get_main_queue(), closure)
return
}
let when = DispatchTime.now() + delay
DispatchQueue.main.after(when: when, execute: closure)
}
Run Code Online (Sandbox Code Playgroud)
编译器提供修复DISPATCH_TIME_NOWto Replace "DISPATCH_TIME_NOW" with "dispatch_time_t(DISPATCH_TIME_NOW)"并抛出错误说
无法将'Int'类型的值转换为预期的参数类型'dispatch_time_t'(又名'UInt64')
我尝试修复它,因为编译器提供但最终导致更多错误.我应该如何在这里使用向后兼容性?我在做什么错了?请帮助,谢谢!
我只是在之前的工作版本7上安装了新的Xcode 8.我尝试构建一个现有的ObjC应用程序并获得了持久的链接器错误:
Run Code Online (Sandbox Code Playgroud)error: cannot parse the debug map for "/Users/--- Library/Developer/Xcode/DerivedData/Sunset3- dejxrzrmfgomxxcrzloplmsozads/Build/Products/Debug- iphonesimulator/Sunset3.app/Sunset3": No such file or directory
搜索,以前的修复程序在这里不起作用:
Run Code Online (Sandbox Code Playgroud)1) Reboot after install 2) Xcode Clean Project 3) Turn off bitcode build options 4) for good measure, I tried targeting into 9.0, 9.3, 10.0 - no difference in outcome 5) Also tried three different simulator targets
对日志的进一步评估显示了一个未被前一个IDE标记的dup对象:
Run Code Online (Sandbox Code Playgroud)duplicate symbol _sharedPlaceDate in: /Users/irampil/Library/Developer/Xcode/DerivedData/Sunset3-dejxrzrmfgomxxcrzloplmsozads/Build/Intermediates/Sunset3.build/Debug-iphonesimulator/Sunset3.build/Objects-normal/x86_64/ViewController.o /Users/irampil/Library/Developer/Xcode/DerivedData/Sunset3-dejxrzrmfgomxxcrzloplmsozads/Build/Intermediates/Sunset3.build/Debug-iphonesimulator/Sunset3.build/Objects-normal/x86_64/GraphClass.old:1个用于体系结构x86_64 clang的重复符号:错误:链接器命令失败,退出代码为1(使用-v查看调用)
在XCode8中创建的de novo ObjC项目编译和链接就好了.关于修复重复对象的其他想法?
当我试图打开一个特定的项目时Xcode它崩溃了这个错误消息(部分):
Process: Xcode [729]
Path: /Applications/Xcode.app/Contents/MacOS/Xcode
Identifier: com.apple.dt.Xcode
Version: 8.1 (11544)
Build Info: IDEFrameworks-11544000000000000~4
App Item ID: 497799835
App External ID: 819397000
Code Type: X86-64 (Native)
Parent Process: ??? [1]
Responsible: Xcode [729]
User ID: 501
Date/Time: 2016-11-06 18:39:39.261 +0200
OS Version: Mac OS X 10.12.1 (16B2555)
Report Version: 12
Anonymous UUID: E3BEFD49-5451-DC5B-81D3-2BD8B1F4987F
Time Awake Since Boot: 140 seconds
System Integrity Protection: enabled
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception …Run Code Online (Sandbox Code Playgroud) 我刚刚使用Xcode 8的转换功能将Swift 2应用程序转换为Swift 3.
我的代码有一个标记为的类WCSessionDelegate.
在Swift 2中,它编译时没有方法sessionDidBecomeInactive和sessionDidDeactivate.
如果我编译Swift 3版本,编译器会抱怨我的类不符合协议WCSessionDelegate,这显然是正确的.
然后它提供插入两个函数的存根:
public func sessionDidBecomeInactive(_ session: WCSession) { }
public func sessionDidDeactivate(_ session: WCSession) { }
Run Code Online (Sandbox Code Playgroud)
插入这些存根后,会报告以下错误:
Cannot override 'sessionDidBecomeInactive' which has been marked unavailable
Cannot override 'sessionDidDeactivate' which has been marked unavailable
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
好的,所以我已经在这个React Native项目上工作了几个星期,现在没有任何问题.我最近更新到xCode 8.0并且RN构建失败了.当我执行"react-native run-ios"时,它会返回"BUILD FAILED"错误.我通过xCode尝试了它,它返回类似的东西.我试着环顾四周,但似乎无法找到解决方案.我敢肯定,这可能是一些在xcode中发生变化的设置.
通过终端运行
> ** BUILD FAILED **
>
>
> The following build commands failed: CompileC
> /Users/macuser/Documents/FreeLance/theHaps/DaHAPS/ReactApp/ios/build/Build/Intermediates/RCTWebSocket.build/Debug-iphonesimulator/RCTWebSocket.build/Objects-normal/x86_64/RCTSRWebSocket.o
> RCTSRWebSocket.m normal x86_64 objective-c
> com.apple.compilers.llvm.clang.1_0.compiler (1 failure)
> /Users/macuser/Documents/FreeLance/theHaps/DaHAPS/ReactApp/node_modules/promise/lib/done.js:10
> throw err;
> ^
>
> Error: xcodebuild process exited with code 65
> at ChildProcess.<anonymous> (runIOS.js:102:14)
> at emitTwo (events.js:100:13)
> at ChildProcess.emit (events.js:185:7)
> at maybeClose (internal/child_process.js:850:16)
> at Process.ChildProcess._handle.onexit (internal/child_process.js:215:5)
Run Code Online (Sandbox Code Playgroud)
通过xcode运行:
谢谢!
我正在将Xcode 7/Swift 2.2 mac OS X项目迁移到Xcode 8/Swift 3,我在我的视图控制器类MyViewController中使用undoManager遇到了一个问题,它有一个函数undo.
在Xcode 7/Swift 2.2中,这很好用:
undoManager?.prepareWithInvocationTarget(self).undo(data, moreData: moreData)
undoManager?.setActionName("Change Data)
Run Code Online (Sandbox Code Playgroud)
在Xcode 8/Swift 3中,使用https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/AdoptingCocoaDesignPatterns.html中推荐的模式
这应该改为:
if let target = undoManager?.prepare(withInvocationTarget: self) as? MyViewController {
target.undo(data, moreData: moreData)
undoManager?. setActionName("Change Data")
}
Run Code Online (Sandbox Code Playgroud)
但是,向MycastController的向下转换始终失败,并且未注册撤消操作.
我错过了一些明显的东西,或者这是一个错误?
在调试模式下,我试图查看变量的值,但它没有显示任何内容.我用Xcode8.一起使用Objective - C和Swift分类.我没有objective-C部分问题,我可以清楚地看到价值观.我阅读了很多帖子和答案,但没有一个帮助我.我尝试在Swift编译器中设置优化级别=无BuildSettings.还尝试将o2和-O0添加到其他linker flags.我检查了编辑方案,它处于调试模式.所以我卡住了.顺便说一句,如果我用快速语言创建项目,我可以看到变量的值.提前致谢.
当我创建一个版本来测试我的iPhone xcode 8崩溃时,当我重新打开xcode时突然发现这个错误来自于无处.
命令/Applications/Xcode.app/Contents/Developer/usr/bin/ibtool失败,退出代码255的工具可能已经坠毁.请在http://bugreport.apple.com上使用上述输出提交错误报告,并附上ibtool,ibtoold,Xcode和Interface Builder Cocoa Touch Tool在此失败时创建的所有崩溃日志.这些日志可以在〜/ Library/Logs/DiagnosticReports或/ Library/Logs/DiagnosticReports中找到.
任何人都可以告诉我如何解决这个问题.
我是iOS的初学者.我搜索过网页,找不到可以解决问题的答案.坚持并且不知道该怎么做以及如何搜索解决方案.
我正在按照基于Swift 2的教程进行操作.以下方法显示错误.
func downloadBooks(bookTitle: String) {
let stringURL = "GET https://www.googleapis.com/books/v1/volumes?q=\(bookTitle)"
guard let URL = URL(string: stringURL) else {
print("url problems")
return
}
let urlRequest = NSMutableURLRequest(url: URL)
let session = URLSession.shared
let task = session.dataTask(with: urlRequest) { (data: Data?, response: URLResponse?, error: Error?) in
}
task.resume()
}
Run Code Online (Sandbox Code Playgroud)
我做了Xcode建议的所有调整,但没有进一步的提示.
而且,教程中的原始代码部分是这样的:
guard let URL = NSURL(string: stringURL) else {
print("url problems")
return
}
Run Code Online (Sandbox Code Playgroud)
然后Xcode建议添加as URL如下:
let urlRequest = NSMutableURLRequest(url: URL as URL)
Run Code Online (Sandbox Code Playgroud)
这两个版本都没有显示错误.那么区别是什么呢?我应该使用哪一个? …
我正在使用XCode 8.2.1.我刚刚了解了颜色配置文件,并且RGB值不是通用的.但仍然无法理解如何在代码中使其正确.在Interface Builder中,我为标签选择了预定义的"深灰色".通用RGB配置文件中为(85,85,85).同样在代码中我将另一个标签颜色设置为[UIColor darkGrayColor].我希望它们具有相同的颜色,但它们是不同的.
我用的方法
- (BOOL)getRed:(nullable CGFloat *)red green:(nullable CGFloat *)green blue:(nullable CGFloat *)blue alpha:(nullable CGFloat *)alpha
Run Code Online (Sandbox Code Playgroud)
获取RGB值.对于在IB中设置颜色的标签,我看到实际上(104,104,104)的值对应于当切换到设备RGB配置文件时IB中的值.所以似乎在代码中使用了设备RGB配置文件.
所以我的问题是: