相关疑难解决方法(0)

传递参考与传递值之间有什么区别?

有什么区别

  1. 通过引用传递的参数
  2. 一个由值传递的参数?

你能给我一些例子吗?

language-agnostic pass-by-reference pass-by-value

539
推荐指数
11
解决办法
65万
查看次数

快速语言中的结构与类

来自Apple的书"结构和类之间最重要的区别之一是结构在代码中传递时总是被复制,但类是通过引用传递的."

任何人都可以让我理解这意味着什么,对我来说,类和结构似乎是一样的.

swift

184
推荐指数
6
解决办法
7万
查看次数

可变对象与不可变对象

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

oop mutable immutability

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

我如何默认公开Swift中结构的成员初始化器?

我有一个定义结构的快速框架:

public struct CollectionTO {
    var index: Order
    var title: String
    var description: String
}
Run Code Online (Sandbox Code Playgroud)

但是,我似乎无法使用另一个导入库的项目中的隐式成员智能初始化程序.错误是'CollectionTO'无法初始化,因为它没有可访问的初始化程序.即它没有给出默认的隐式成员明智的初始化者public关键字.

var collection1 = CollectionTO(index: 1, title: "New Releases", description: "All the new releases")
Run Code Online (Sandbox Code Playgroud)

我必须添加我自己的init方法,如下所示:

public struct CollectionTO {
    var index: Order
    var title: String
    var description: String

    public init(index: Order, title: String, description: String) {
        self.index = index;
        self.title = title;
        self.description = description;
    }

}
Run Code Online (Sandbox Code Playgroud)

...但是如果还有其他人知道的话,我宁可不要这样做?

struct initialization swift

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

Swift枚举继承

你能在Swift中继承enum吗?关于枚举继承,应该注意哪些规则?

以下测试代码:

enum TemperatureUnit: Int {
    case Kelvin, Celcius, Farenheit
}

enum TemperatureSubunit : Temperature {  
}
Run Code Online (Sandbox Code Playgroud)

生成

error: type 'TemperatureSubunit' does not conform to protocol 'RawRepresentable'
Run Code Online (Sandbox Code Playgroud)

inheritance enums ios swift rawrepresentable

53
推荐指数
3
解决办法
3万
查看次数

Swift堆栈/堆理解

我想在swift中不希望存储在堆栈/堆中的内容.我有一个很好的估计:你打印的所有东西和内存地址都不是值,它们存储在堆栈中,而是打印出的值是什么,它们在堆上,基本上根据值和引用类型.我完全错了吗?并且可选地,您是否可以提供堆栈/堆的可视化表示?

memory heap stack ios swift

33
推荐指数
4
解决办法
2万
查看次数

是否快速复制所有结构的写入?

我知道swift会优化复制写入数组,但它会为所有结构执行此操作吗?例如:

struct Point {
   var x:Float = 0
}

var p1 = Point()
var p2 = p1 //p1 and p2 share the same data under the hood
p2.x += 1 //p2 now has its own copy of the data
Run Code Online (Sandbox Code Playgroud)

value-type copy-on-write swift

23
推荐指数
2
解决办法
4298
查看次数

Swift 3:是否继承NSObject?

我看过一些帖子像这样一个关于子类之间的差别NSObject在斯威夫特或者只是有其天然的基础class,没有子类.但他们都有点旧帖,我不清楚这个话题.

NSObject什么时候应该继承?子类化和非子类化之间的实际区别是什么?目前Swift的推荐是什么?

inheritance class subclass nsobject swift

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

如果数组是值类型并因此被复制,那么它们如何不是线程安全的?

阅读本文我了解到:

不共享值类型的实例:每个线程都有自己的副本.*这意味着每个线程都可以读取和写入其实例,而不必担心其他线程在做什么.

然后我被带到这个答案及其评论

并被告知:

一个数组本身不是线程安全的,正在从多个线程访问,因此必须同步所有交互.

关于每个线程都有自己的副本,我被告知

如果一个线程正在更新一个数组(可能是因为你可以看到来自另一个队列的编辑),那根本就不适用

根本不适用 < - 为什么不呢?

我最初认为所有这一切都发生了,因为数组即一个值类型被包装成一个类但令我惊讶的是我被告知不是真的!所以我又回到了Swift 101:D

arrays multithreading struct value-type swift

10
推荐指数
1
解决办法
2604
查看次数

如何在Swift 2中将结构转换为Anyobject?

我有,

struct S {}
Run Code Online (Sandbox Code Playgroud)

随着,

func y (x: S) -> AnyObject {}
Run Code Online (Sandbox Code Playgroud)

在Swift 2中,是否有可能在y()中,

return x
Run Code Online (Sandbox Code Playgroud)

我目前的代码:

struct S {let value: Int = 0}
let x = S()
func y(x: S) -> AnyObject {return x}
Run Code Online (Sandbox Code Playgroud)

产生以下错误:

'S'类型的返回表达式不符合'AnyObject'类型

有没有办法缓解这种情况?

macos casting class ios swift

9
推荐指数
1
解决办法
7089
查看次数