Swift 中风味各异的类型擦除
社区首页 (3597)




请编写您的帖子内容
社区频道(5)
显示侧栏
卡片版式
全部
Swift
SwiftUI
博文收录
Ada助手

92
评分
回复


Swift 中风味各异的类型擦除
前言Swift的总体目标是既强大到可以用于底层系统编程,又足够容易让初学者学习,这有时会导致相当有趣的情况——当Swift的类型系统的力量要求我们部署相当高级的技术来解决乍一看可能更微不足道的问题。大多数Swift开发人员会在某一时刻或另一时刻(通常是马上,而不是日后)会遇到这样一种情况,即需要某种形式的类型擦除才能引用通用协议。从本周开始,让我们看一下是什么使类型擦除在Swift中成为必不可少的技术,然后继续探索实现它的不同 “风味(Flavors)”,以及每种风味为何各有优缺点。什么时候需要类型擦
复制链接 扫一扫
分享

88
评分
回复


Swift 中的幻象类型
前言模糊的数据可以说是一般应用程序中最常见的错误和问题的来源之一。虽然 Swift 通过其强大的类型系统和完善的编译器帮助我们避免了许多含糊不清的来源——但只要我们无法在编译时保证某个数据总是符合我们的要求,就总是有风险,我们最终会处于含糊不清或不可预测的状态。本周,让我们来看看一种技术,它可以让我们利用 Swift 的类型系统在编译时执行更多种类的数据验证——消除更多潜在的歧义来源,并帮助我们在整个代码库中保持类型安全——通过使用幻象类型(phantom types)。定义良好,但仍然含糊不清举个
复制链接 扫一扫
分享



93
评分
回复


Swift 周报 第十一期
本期是 Swift 编辑组自主整理周报的第二期,每个模块还在调整磨合期。各位读者如果有好的提议,欢迎在文末留言。Swift 周报在GitHub 开源,欢迎提交 issue,投稿或推荐内容。目前计划每两周周一发布,欢迎志同道合的朋友一起加入周报整理。平凡的八月,不平凡的世界,你若落后,必定挨打,你若前进,方得始终!Swift社区,给你最新的指引,给你最真的铠甲!周报精选新闻和社区:已消失 5 年 iPhone 电量百分比为何现在回归提案:和脚本语言相媲美的字符串算法。...
复制链接 扫一扫
分享

93
评分
回复


iOS 判断设备是否越狱(两种方式结合判断)
越狱测试仅限真机+ (BOOL)JailBreak{ BOOL status1 = NO; BOOL status2 = NO; //根据是否能打开cydia判断 status1 = [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"cydia://"]]; //根据是否能获取所有应用的名称判断 没有越狱的设备是没有读取所有应用名称的权限的 status2 = [[NSF
复制链接 扫一扫
分享

114
评分
回复


Swift 基本运算符之区间
Swift 提供了两个方便表达一个区间的值的运算符。一:闭区间闭区间运算符 a…b 定义一个包含从 a 到 b (包括 a 和 b)的所有值的区间. 闭区间运算符在迭代一个区间的所有值时是非常有用的, 如在 for-in 循环中:for index in 1...5 { print("\(index) * 5 = \(index * 5)")}//运行结果//1 * 5 = 5//2 * 5 = 10//3 * 5 = 15//4 * 5 = 20//5 * 5 = 2
复制链接 扫一扫
分享

93
评分
回复


Swift 比较运算和三目条件运算
一:比较运算所有标准 C 中的比较运算都可以在 Swift 中使用。等于 a == b不等于 a!=b大于 a > b小于 a < b大于等于 a >= b小于等于 a <= b注意: Swift 也提供恒等 === 和不恒等 !== 这两个比较符来判断两个对象是否引用同一个 对象实例。更多细节在 类与结构。每个比较运算都返回了一个标识表达式是否成立的布尔值:1 == 1 // true, 因为 1 等于 12 != 1 // true, 因为 2 不等于 1
复制链接 扫一扫
分享

95
评分
回复


Swift 基本运算符之赋值
一:赋值运算符赋值运算 a = b, 表示用 b 的值来初始化或更新 a 的值。let b = 10var a = 5a = b// a 现在等于 10如果赋值的右边是一个多元组, 它的元素可以马上被分解多个变量或变量let (x, y) = (1, 2)// 现在 x 等于 1, y 等于 2与 C 语言和 Objective-C 不同, Swift 的赋值操作并不返回任何值. 所以以下代码是错误的:ifx=y{ // 此句错误, 因为 x = y 并不返回任何值 }
复制链接 扫一扫
分享

92
评分
回复


Swift 基本运算符之数值运算
运算符是检查, 改变, 合并值的特殊符号或短语. 例如, 加号 + 把计算两个数的和(如 let i = 1 + 2). 复杂些的运行算包括逻辑与&&(如 if enteredDoorCode && passedRetinaScan),还有自增运算符 ++i 这样让自身加一的便捷运算。下面介绍基础运算符中的数值运算。数值运算Swift 让所有数值类型都支持了基本的四则运算:加法 +减法 -乘法 *除法 /1 + 2 // 等于 35 - 3 // 等于 22
复制链接 扫一扫
分享

104
评分
回复


Swift 基础之断言
可选可以让你判断值是否存在,你可以在代码中优雅地处理值缺失的情况。然而,在某些情况下,如果值缺失或者值并不满足特定的条件,你的代码可能并不需要继续执行。这 时,你可以在你的代码中触发一个断言(assertion)来结束代码运行并通过调试来找到值 缺失的原因。一:使用断言进行调试断言会在运行时判断一个逻辑条件是否为 true。从字面意思来说,断言“断言”一个条件是否为真。你可以使用断言来保证在运...
复制链接 扫一扫
分享

90
评分
回复


Swift 基础之可选
使用可选(optionals)来处理值可能缺失的情况。可选表示: (有值)等于 x或者(没有值)。注意:C 和 Objective-C 中并没有可选这个概念。最接近的是 Objective-C 中的一个特 性,一个方法要不返回一个对象要不返回 nil,nil 表示“缺少一个合法的对象”。然而,这只 对对象起作用——对于结构体,基本的 C 类型或者枚举类型不起作用。对于这些类型,Objective...
复制链接 扫一扫
分享

92
评分
回复


Swift 基础之布尔值和元组
一:布尔值Swift 有一个基本的布尔(Boolean)类型,叫做 Bool。布尔值指逻辑上的(logical),因为它们只能是真或者假。Swift 有两个布尔常量,true 和 false:let orangesAreOrange = truelet turnipsAreDelicious = falseorangesAreOrange 和 turnipsAreDelicious 的类...
复制链接 扫一扫
分享

93
评分
回复


Swift 基础之类型
一:类型安全和类型推测Swift 是一个类型安全(typesafe)的语言。类型安全的语言可以让你清楚地知道代码要处 理的值的类型。如果你的代码需要一个 String,你绝对不可能不小心传进去一个 Int。由于 Swift 是类型安全的,所以它会在编译你的代码时进行类型检查(type checks),并把 不匹配的类型标记为错误。这可以让你在开发的时候尽早发现并修复错误。当你要处理不同类型的...
复制链接 扫一扫
分享

90
评分
回复


Swift 基础之整数和浮点数
一:整数整数就是没有小数部分的数字,比如 42 和-23。整数可以是有符号(正、负、零)或者无 符号(正、零)。Swift 提供了 8,16,32 和 64 位的有符号和无符号整数类型。这些整数类型和 C 语言的命名方式很像,比如 8 位无符号整数类型是 UInt8,32 位有符号整数类型是 Int32。就像 Swift 的其他类型一样,整数类型采用大写命名法。1. 整数范围你可以访问不同...
复制链接 扫一扫
分享

89
评分
回复


Swift 基础之常量和变量
常量和变量把一个名字(比如 maximumNumberOfLoginAttempts 或者 welcomeMessage)和一个指定类型的值(比如数字 10 或者字符串"Hello")关联起来。常量的值一旦设定就不能改变,而变量的值可以随意更改。一:声明常量和变量常量和变量必须在使用前声明,用 let 来声明常量,用 var 来声明变量。下面的例子展示了如何用常量和变量来记录用户尝试登录的次数...
复制链接 扫一扫
分享

106
评分
回复


Swift 基础之控制流
Swift 提供了类似 C 语言的流程控制结构,包括可以多次执行任务的 for 和 while 循环,基于特定条件选择执行不同代码分支的 if 和 switch 语句,还有控制流程跳转到其他代码的 break 和 continue 语句。除了 C 里面传统的 for 条件递增循环,Swift 还增加了 for-in 循环,用来更简单地遍历数 组(array),字典(dictionary),范围(...
复制链接 扫一扫
分享

95
评分
回复


iOS OC调用Swift
iOS OC调用Swift 需要四步就能完成第一步Build Settings->Defines Module 设置为 YESMOdule Name 配置工程名第二步把swift 拖入项目,会提示是否创建桥接文件,选择创建非拖入式,没有提示 手动创建 选择 header file命名 XXXX-Bridging-Header [XXXX 表示项目名称]第三步Build Se...
复制链接 扫一扫
分享

222
评分
回复


解决 iOS 13 定位权限弹框自动消失
当手机升级到iOS 13的时候,你会发现很多奇葩问题,比如:原来正常的项目现在报错了,原来可以获取到的Wi-Fi信息没有了,定位弹框自动消失等等。定位权限弹框弹出后没有做任何操作自动消失了,代码如下:CLLocationManager *locationManagerSystem = [[CLLocationManager alloc]init];[locationManagerSystem...
复制链接 扫一扫
分享
为您搜索到以下结果:
24
社区成员
41
社区内容




Swift社区
Swift社区 是由 Swift 爱好者共同维护,我们会分享以 Swift 实战、SwiftUI、Swift 基础为核心的技术内容。
欢迎关注公众号:Swift社区,后台点击进群,加入我们
复制链接 扫一扫

确定
社区描述
Swift社区 是由 Swift 爱好者共同维护,我们会分享以 Swift 实战、SwiftUI、Swift 基础为核心的技术内容。
欢迎关注公众号:Swift社区,后台点击进群,加入我们 iosswift 技术论坛(原bbs) 上海·浦东新区
加入社区
获取链接或二维码
- 近7日
- 近30日
- 至今
加载中
社区公告
做最好的 Swift 社区
我们的使命是做一个最专业最权威的 Swift 中文社区
我们的愿景是希望更多的人学习和使用Swift
我们会分享以 Swift 实战、SwiftUI、Swift 基础为核心的技术干货