在Swift中使用遗留的C API】的更多相关文章

Swift的类型系统的设计目的在于简化我们的生活,为此它强制用户遵守严格的代码规范来达到这一点.毫无疑问这是一件大好事,它鼓励程序员们编写 更好更正确的代码.然而,当Swift与历史遗留的代码库.特别是C语言库进行交互时,问题出现了.我们需要面对的现实是许多C语言库滥用类型,以至于它 们对Swift的编译器并不友好.苹果的Swift团队的确花了不少功夫来支持C的一些基础特性,比如C字符串.但当在Swift中使用历史遗留的C语言 库时,我们还是会面临一些问题.下面我们就来解决这些问题. 在开始之前…
在我们开发的过程中,时不时地需要产生一些随机数.这里我们总结一下Swift中常用的一些随机数生成函数.这里我们将在Playground中来做些示例演示. 整型随机数 如果我们想要一个整型的随机数,则可以考虑用arc4random系列函数.我们可以通过man arc4random命令来看一下这个函数的定义: The arc4random() function uses the key stream generator employed by the arc4 cipher, which uses…
原文出处:Understanding Optionals in Swift 苹果新的Swift编程语言带来了一些新的技巧,能使软件开发比以往更方便.更安全.然而,一个很有力的特性Optional,在你第一次使用时可能会感到困惑.Optionals将会在编译阶段检查哪些值为nil.通过这种方式,你可以更好的保证应用程序交付在用户手里是可运行的.在Swift中,Optionals也提供了一些接口用来和遗留的Objective-C代码之间交互. 初试Optional 让我们在XCode中新建一个叫做s…
swift中第三方网络请求库Alamofire的安装与使用 Alamofire是swift中一个比较流行的网络请求库:https://github.com/Alamofire/Alamofire.下面我们就介绍一个这个库的安装与使用. 一.安装包管理工具CocoaPods 由于国内容易被墙,速度也非常的慢,这里我们使用提供的源 http://ruby.taobao.org/ gem sources --remove https://rubygems.org/ gem sources –a htt…
SWIFT 中  指针被映射为泛型 UnsafePointer<T> UnsafeMutablePointer<T> 表示一组连续数据指针的 UnsafeBufferPointer<T> 表示非完整结构的不透明指针 COpaquePointer 等等 UnsafePointer<T> 通过 memory 属性对其进行取值,如果这个指针是可变的 UnsafeMutablePointer<T> 类型,我们还可以通过 memory 对它进行赋值. fu…
在第一部分中, 你学到了并发,线程以及GCD的工作原理.通过使用dispatch_barrrier和dispatch_sync,你做到了让 PhotoManager单例在读写照片时是线程安全的.除此之外,你用到dispatch_after来提示用户,优化了用户体验.还有,使用 dispatch_async异步执行CPU密集型任务,从而为视图控制器初始化过程减负. 如果你跟着教程做,现在可以从第一部分的示例工程继续.如果你没有完成第一部分或不想再用你的工程,可以下载第一部分的完成文件. 是时候进一…
尽管Grand Central Dispatch(GCD)已经存在一段时间了,但并非每个人都知道怎么使用它.这是情有可原的,因为并发很棘手,而且GCD本身基于C的API在 Swift世界中很刺眼. 在这两篇教程中,你会学到GCD的来龙去脉.第一部分解释了GCD可以做什么和几个基本功能.第二部分,你会学到一些GCD所提供的进阶功能. 起步 libdispatch 是Apple所提供的在IOS和OS X上进行并发编程的库,而GCD正是它市场化的名字.GCD有如下优点: – GCD可以将计算复杂的任务…
未翻译完 待续(英语烂,求斧正) Type Casting 类型转换 Type casting is a way to check the type of an instance, and/or to treat that instance as if it is a different superclass or subclass from somewhere else in its own class hierarchy. 类型转换是检测实例所属类型的一种方法,和/或 去对待实例好像它是一个…
iOS开发中大部分App的网络数据交换是基于HTTP协议的.本文将简单介绍在Swift中使用HTTP进行网络请求的几种方法. 注意:网络请求完成后会获得一个NSData类型的返回数据,如果数据格式为JSON,那么可以使用系统自带的NSJSONSerialization类来解析数据:或者使用SwiftyJSON库的使用和思考一文中提到的JSON解析库来解析数据. 1. 使用NSURLConnection 下面例子使用NSURLConnection实现了一个简单的异步GET操作: func requ…
Swift中的反射非常有限,仅允许以只读方式访问元数据的类型子集.或许 Swift 因有严格的类型检验而不需要反射.编译时已知各种类型,便不再需要进行进一步检查或区分.然后大量的 Cocoa API 会立即给实例分配"AnyObject"类型,用户只能想方设法去做类型匹配. 而这里将回顾 Swift 中的反射.镜像类型以及将它们结合起来的 MirrorType 协议. MirrorType 反射的切入点为「reflect」函数,「reflect」函数可将任何类型作为其单参数并返回一个…