草庐IT

swift - Swift 2.0 do-try-catch 和常规 Java/C#/C++ 异常有什么区别

似乎Swift2.0已经从传统的ObjC(返回NSError)和Swift1.X(成功/失败选项)约定的运行时错误处理改变为看起来非常类似于Java/C#等语言中的异常处理/C++/等Apple传统上有emphasizeduseofNSErrorinsteadofthrowingNSExceptionforruntimeerrors(与程序员错误相比),因为NSException堆栈展开可能会导致默认ObjC编译器设置的内存泄漏。然而,现在他们设计了一些看起来与传统异常非常相似的东西。我的问题是:除了术语(错误与异常)和语法(do-catch,而不是try-catch,尝试在方法调用之

swift - `guard let foo = foo` 什么时候合法的?

回到2016年11月,我发布了一个问题,询问为什么我不能使用guard创建一个使用与可选变量相同名称的变量的未包装版本,就像你可以使用iflet一样:链接:Whyisn'tguardletfoo=foovalid?当我写这个问题时,下面的代码将无法编译并出现“定义与先前值冲突”的错误://Testofusingguardtocreateanunwrappedversionofavar,likeifletfuncguardTest(_viewController:UIViewController?)->UIViewController?{//CheckifthecurrentviewCo

来自 AST 上下文 :"的 Swift "error: in auto-import: failed to get module ' foo'

使用以下设置(gist):Package.swift:importPackageDescriptionletpackage=Package(name:"foo",dependencies:[.Package(url:"https://github.com/rxwei/LLVM_C",majorVersion:1,minor:0)])生成文件:all:@swiftbuild\-Xcc-I`llvm-config--includedir`\-Xlinker-L`llvm-config--libdir`\-Xlinker-rpath-Xlinker`llvm-config--libdir`m

swift 3 : How do I pinch to scale and rotate UIImageView?

我真的很难在网上找到教程以及已经回答的问题(我试过了,但它们似乎不起作用)。我有一个位于View中心的UIImageView。我目前可以在屏幕上任意位置点击并拖动它。我希望能够缩放和旋转此View。我如何实现这一目标?我已经尝试了下面的旋转代码,但它似乎不起作用?任何帮助都将是巨大的帮助并标记为答案。谢谢你们。importUIKitclassDraggableImage:UIImageView{overridefunctouchesBegan(_touches:Set,withevent:UIEvent?){self.backgroundColor=.blue}overridefunc

ios - AVAudioEngine.start() 中的崩溃,即使它被包裹在 do/catch 中

我有以下代码来(重新)启动连接到AVAudioEngineConfigurationChangeNotification的AVAudioEngine:do{tryself.engine.start()}catch{DDLogError("couldnotstartsoundengine")self.soundEnabled=falsereturn}self.engine定义为privateletengine=AVAudioEngine()但是,我经常通过Crashlytics收到崩溃报告FatalException:com.apple.coreaudio.avfaudioerror56

performance - Swift Dictionary 即使经过优化也很慢 : doing uncessary retain/release?

以下代码将简单值持有者映射到bool值,在Java中的运行速度比Swift2快20倍以上-XCode7beta3、“Fastest,AggressiveOptimizations[-Ofast]”和“Fast,WholeModuleOptimizations”已启用.我可以在Java中获得超过280M的查找/秒,但在Swift中只有大约10M。当我在Instruments中查看它时,我发现大部分时间都在进行一对与map查找相关的保留/释放调用。任何关于为什么会发生这种情况或解决方法的建议将不胜感激。代码的结构是我的真实代码的简化版本,它有一个更复杂的键类并且还存储了其他类型(尽管Boo

ios - Swift Eureka 表单 : how do you limit the number of rows in a multivalued section?

我正在使用Eureka使用Swift在iOS中构建表单。我创建了一个多值部分,例如:form+++MultivaluedSection(multivaluedOptions:[.Insert,.Delete],header:"MyHeader",footer:"Myfooter"){sectioninsection.tag="mySectionTag"section.addButtonProvider={_inreturnButtonRow(){rowinrow.title="Addrow"}}section.multivaluedRowToInsertAt={indexinretur

ios - Swift 2.0 中的 do { } catch 不会处理从这里抛出的错误

在我更新swift2.0后,do{try}catch出现错误,如下图所示。我该如何解决这个问题?谢谢! 最佳答案 错误告诉您封闭的catch并不详尽。这是因为自动生成的catchblock只捕获NSError对象,编译器无法判断是否会抛出其他一些ErrorType.如果您确定不会抛出其他错误,您可以添加另一个默认的catchblock:do{objects=trymanagedObjectContext?.executeFetchRequest(request)}catchleterror1asNSError{error=error

xcode - Playground 导入 : No Such Module 'Foo'

我已认真按照Apple说明将自定义模块导入playground,包括说明here.然而我得到:Playgroundexecutionfailed:/var/folders/z3/kd0nj4ln1rgcpm8bdz7067wh0000gs/T/./lldb/1874/playground1.swift:7:8:error:nosuchmodule'Foo'importFoo如何恢复到正常运行的Playground导入?[编辑:请注意,有两个答案提供了将Playground与框架相关联的详细说明;我已按照这些说明进行操作,但没有运气。解决方案需要在Xcode中重新配置一些东西;我的安装显

dependency-injection - 依赖注入(inject)框架 : Why do I care?

我正在阅读InjectionbyHand和Ninjection(以及WhyuseNinject)。我遇到了两个困惑:手动注入(inject)技术我已经很熟悉了,但我对Ninjection不熟悉,因此不确定完整的程序如何工作。也许提供一个完整的程序会有所帮助,而不是像该页面上所做的那样,将程序分解成多个部分我仍然不明白这如何让事情变得更简单。我想我错过了一些重要的东西。如果您正在创建一组注入(inject)然后同时在两个大组之间切换(这对于模拟等很有用),我可以看出注入(inject)框架会有多大帮助,但我认为还有更多比起那个来说。但我不确定是什么。或者,也许我只需要更多例子来说明为什么