1、下面两段创建Swift的代码有区别吗?如果有,请说明一下。
// code1
let a = String("test")
// code2
let b = "\("test")"
答:
code1是使用字符串初始化器来创建字符串
code2是使用字符串插值的方式来创建字符串。
字符串插值优缺点:
- 优点:
(1)可以构建复杂的字符串,可以直接把多个变量或表达式组成一个完整的字符串
(2)编译器会进行优化进,进行常量字符串合并,减少内存分配的开销
- 缺点:
构造字符串形式单一,特定的类型无法直接转换成字符串
初始化构造器优缺点:
- 优点:
其他类型转换成字符串类型就必须使用特定的字符串初始化构造器,即可以实现字符串创建的多样化
- 缺点:
初始化构造器会涉及内存分配开销,性能上不如字面量插值的方式
2、请简述Swift中throws 和 rethrows的区别?
答:
throws:标记函数可能会抛出异常,调用函数的地方需要处理可能抛出的异常。
rethrows:函数本身不会抛出异常,如果作为参数的闭包抛出了异常,则会继续往上抛出异常,可以理解为传递throw。
3、讲一讲字符串类型 String 和 NSString 之间有什么区别?
答:
(1)String是值类型,NSString是引用类型,性能开销上有差异(常见的比如字符串赋值操作、频繁的创建或销毁字

最低0.47元/天 解锁文章
2953

被折叠的 条评论
为什么被折叠?



