相关疑难解决方法(0)

swift中`let`和`var`有什么区别?

是什么区别let,并var在苹果的雨燕语言?

根据我的理解,它是一种编译语言,但它不会在编译时检查类型.这让我感到困惑.编译器如何知道类型错误?如果编译器没有检查类型,那么生产环境是不是有问题?

swift

302
推荐指数
8
解决办法
16万
查看次数

可变对象与不可变对象

我试图让我的头围绕可变对象和不可变对象.使用可变对象会导致很多不良操作(例如,从方法中返回一个字符串数组),但我无法理解其中的负面影响.使用可变对象的最佳做法是什么?你应该尽可能地避开它们吗?

oop mutable immutability

166
推荐指数
6
解决办法
8万
查看次数

如何在Swift中创建不可变数组?

如何在Swift中创建不可变数组?

对文档的肤浅解读表明你可以做到

let myArray = [1,2,3]
Run Code Online (Sandbox Code Playgroud)

但遗憾的是,这实际上产生了一个可变的,固定大小的数组.这种可变性创建了常见的谜题,其中包含未预料到的别名和函数,这些谜题会改变其参数:

let outterArray = [myArray, myArray]
outterArray[0][0] = 2000
outterArray //=> [[2000,2,3],[2000,2,3]]   surprise!

func notReallyPure(arr:Int[]) -> () { arr[0] = 3000 }
notReallyPure(myArray)
myArray // => [3000,2,3]
Run Code Online (Sandbox Code Playgroud)

没比C好多少

如果我想要不变性,那么最好将它包装NSArray成如此:

let immutableArray = NSArray(myArray: [1,2,3])
Run Code Online (Sandbox Code Playgroud)

这看起来很疯狂.我在这里错过了什么?

更新时间(2015-07-26):

这个问题可以追溯到斯威夫特的早期阶段.从那时起,Swift已经更新,因此不可变数组实际上是不可变的,如下面的答案所示.

arrays swift

30
推荐指数
2
解决办法
1万
查看次数

在iOS中线程安全是什么意思?

我经常碰到“线程安全”这两个关键术语,想知道这意味着什么。例如,在Firebase或Realm中,某些对象被视为“线程安全”。线程安全的东西到底意味着什么?

thread-safety ios swift

7
推荐指数
3
解决办法
1766
查看次数

标签 统计

swift ×3

arrays ×1

immutability ×1

ios ×1

mutable ×1

oop ×1

thread-safety ×1