包含标签 Swift 的文章

GCD 在 Swift 中的用法

DispatchQueue Swift 中,对 GCD 语法进行了彻底改写。引入了 DispatchQueue 这个类。 先来看看在一个异步队列中读取数据, 然后再返回主线程更新 UI, 这种操作在新的 Swift 语法中是这样的: 1 2 3 4 5 6 7 8 9 DispatchQueue.global().async { DispatchQueue.main.async { // 更新UI操作 } } DispatchQueue.global().async 相当于使用全局队列进行异步操作。然后在调用 DispatchQueue.main.async 使用主线程更新相应的 UI 内容。 优先级 新的 GCD 引入了 QoS (Quality……

阅读全文

Swift 4 新特性

private 权限扩大 在 Swift 4 中,extension 可以读取 private 变量了。 Swift 3 中,如果将主体函数的变量定义为 private,则其 extension 无法读取此变量,必须将其改为 filePrivate 才可以。 单向区间 单向区间是一个新的类型,主要分两种:确定上限和确定下限的区间。直接用字面量定义大概可以写成 …6和 2… 例如 1 2 3 4 let intArr = [0, 1,……

阅读全文

Swift的HMAC和SHA1加密

HMAC是密钥相关的哈希运算消息认证码(Hash-based Message Authentication Code)。 HMAC运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。也就是说HMAC通过将哈希算法(SHA1, MD5)与密钥进行计算生成摘要。 Objectice-C 在上个 Objectice-C 项目中,使用的 HMAC 和 SHA1 进行加密。如下代码:……

阅读全文

在 Swift 中使用 IBInspectable

本文首次发布于 BY Blog, 作者 @柏荧(BY) ,转载请保留原文链接. 前言 通过 IB 设置 控件 的属性非常的方便。 但是缺点也很明显,那就是有一些属性没有暴露在 IB 的设置面板中。这时候就要使用 @IBInspectable 在 IB 面板中添加这些没有的属性。 关于在 OC 中使用 IBInspectable 可以看一下我的 这篇文章 正文 在项目中最常遇到的情况是为 view 设置圆角、……

阅读全文

R.swift 的使用

本文首次发布于 BY Blog, 作者 @柏荧(BY) ,转载请保留原文链接. 什么是 R.swift 介绍 R.swift 前,我们先看看 R.swift 能做什么 通常,我们是基于 字符串 来获取资源,例如:图片、xib、或者是 segue 1 2 let myImage = UIImage(named: "myImage") let myViewController = R.storyboard.main.myViewController() 使用 R.swfit,我们可以这样写 1 2 let myImage = R.image.myImage() let viewController = R.storyboard.main.myViewController() R.swift 通过扫描你的各种基于字符串命名的资源,创建一……

阅读全文

Swift 的懒加载和计算型属性

本文首次发布于 BY Blog, 作者 @柏荧(BY) ,转载请保留原文链接. 懒加载 常规(简化)写法 懒加载的属性用 var 声明 lazy var name: String = { return "BY" }() 完整写法 lazy var name: String = { () -> String i return "BY" }() 本质是一个创建一个闭包 {} 并且在调用该属性时执行闭包 ()。 如OC的懒加载不同的是 swift 懒加载闭包只调用一次,再次调用该属性时因为属性已……

阅读全文

强化 swift 中的 print

在 Swift 中,最简单的输出方法就是使用 print(),在我们关心的地方输出字符串和值。 当程序变得非常复杂的时候,我们可能会输出很多内容,而想在其中寻找到我们希望的输出其实并不容易。我们往往需要更好更精确的输出,这包括输出这个 log 的文件,调用的行号以及所处的方法名字等等。 在 Swift 中,编译器为我……

阅读全文

Swift 3.1 的新变化「译」

Xcode 8.3 和 Swift 3.1 现在已经发布了(3/28)! 可以通过 AppStore 或 Apple Developer 进行下载 Xcode 8.3 优化了 Objective-C 与 Swift 混编项目的编译速度. Swift 3.1 版本包含一些期待已久的 Swift package manager 功能和语法本身的改进。 如果您没有密切关注 Swift Evolution 进程,请继续阅读 - 本文非常适合您! 在本文中,我将强调Swift 3.1中最重要的变化,这将对您的代码产生重大……

阅读全文

Swift 代理模式

Xcode 8.2 | Swift 3.0 在iOS开发中,无论是 Objective-C 还是 Swift ,Delegate 有着具足轻重的位置,如TabelViewDelegate 与 TableViewDataSource。 Swift 中的代理模式 和 Objective-C 除了语法外,几乎一样。 Objective-C 代理模式 在介绍 Swift 代理模式前,先来看回顾一下 Objective-C 中的代理模式如何实现 Objective-C 中用代理实现反向……

阅读全文