小编Alw*_*ing的帖子

Swift 结构总是存储在堆栈中吗?

在一次面试中,我被要求概述Swift 中结构体之间的区别。在我的观点中,我提出了这样的论点:结构存储在堆栈中(它们的空间在编译时保留),而存储在堆中(空间在运行时分配)。

然后面试官说他真的会测试我对 Swift 的了解有多深,然后问我结构体是否总是存储在堆栈中。经过一番来回,他做出了这样的声明:

如果结构体长度超过 3 个字,则将其分配在堆中

我在网上做了一些研究,但似乎在任何地方都找不到这个。谁能证实或否认这一说法的有效性?另外,请随意添加任何相关/有效信息。

memory struct heap-memory stack-memory swift

7
推荐指数
0
解决办法
3093
查看次数

将结构体设置为可编码/可解码而不只是可编码是否有任何性能优势?

对于要序列化的示例结构: Person

struct Person {
    let firstName: String
    let lastName: String
}
Run Code Online (Sandbox Code Playgroud)

我们可以使其符合EncodableDecodableCodable协议。我知道我们在Encodable和 之间的选择Decodable取决于用例(例如,如果我们正在访问 API 并且不需要解码包含相同类型的响应),但我们也可以使其符合Codable如果结构是两者都用于编码和解码。

如果我们严格需要该结构体用于编码或解码,但不是两者,那么从性能角度来看,仅使用包罗万象Codable而不是指定Encodable/Decodable一致性是一个坏主意吗?

使用Codable而不是指定Encodable/的一个明显缺点Decodable是,另一个程序员可能会将该结构误解为用于编码和解码,而实际上只有两者之一发生。但如果我对性能非常感兴趣怎么办?

ios swift codable decodable encodable

3
推荐指数
1
解决办法
905
查看次数

如何使用“osrm”包获取超过1000个距离矩阵

我正在尝试使用包“osrm”计算 R 中的更多距离。我不知道我做错了什么,因为我遵循了包中的所有步骤。当我尝试使用 argument 时max-table-size,它返回一个错误。

我已经尝试将参数max-table-size放入代码中,但这不起作用。

我尝试这样做:

distancias <- osrmTable(loc = dist[1:100, c("id","lon","lat")]"max-table-size")
Run Code Online (Sandbox Code Playgroud)

当我尝试这个时,出现以下错误:

OSRM 服务器返回错误:名称错误(src) <- c("id", "lon", "lat"): 'names' 属性 [3] 必须与向量 [1] 的长度相同

library(osrm)

dist <- read.table ("C:\\Users\\hammer\\Documents\\Erick\\22-05-19\\Distancias\\mg.txt", header=TRUE, sep="\t")


distancias <- osrmTable(loc = dist[1:100, c("id","lon","lat")])


write.table(distancias, file = "dist.txt", sep="\t")
Run Code Online (Sandbox Code Playgroud)

我希望得到一个 3.600 x 3.600 的距离矩阵

r

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

如何将单例模式与依赖注入结合使用?

我最近听说使用依赖注入是“当今软件开发世界中使用单例的唯一社会可接受的方式”。我现在不一定想辩论这个陈述的准确性,因为它主要是基于意见的。我现在的目标是了解如何在单例模式中使用依赖注入。

例如,在我最新的 iOS 应用程序中,我有一个服务层,用于保存我的URLSession代码。我将此层创建为单例:

struct ServiceSingleton {

    private init()

    static let shared = ServiceSingleton()

    func fetchJSON() {
     // URLSession code
    }

}
Run Code Online (Sandbox Code Playgroud)

然后shared我在我的ViewController 中使用,如下所示:

class ViewController: UIViewController() {

    override viewDidLoad() {
        super.viewDidLoad()

        fetchData()    

    }

    fileprivate func fetchData() {

        ServiceSingleton.shared.fetchJSON()
    }

}
Run Code Online (Sandbox Code Playgroud)

当然,上面的代码使用了单例,但是没有使用依赖注入。我知道,如果我想一般使用依赖注入,我会向ViewController添加这样的东西:

// Dependency Injection Constructor
override init(someProperty: SomePropertyType) {
    self.someProperty = someProperty
    super.init()
}
Run Code Online (Sandbox Code Playgroud)

特尔;博士:

(1) 你能告诉我如何在 Swift 中正确使用单例模式的依赖注入吗?

(2) 你能向我解释一下这有什么作用吗?

(3) 以后在我的iOS项目中使用单例模式时,是否应该一直使用DI?

singleton design-patterns dependency-injection swift

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

如何使用递归来产生权力之和?

我试图只使用递归(并没有内置函数)编写一个函数,它消耗两个数字,x和y并产生总和

1 + x + x^2 + ... + x^(y-1) + x^y

请注意,我正在寻找一种使用for/while循环的方法,因为我还没有学习它们.到目前为止,我有以下功能:

def power_addition (x, y):
    i = 0
    if i < y:
        i = i+1
        return x**i + power_addition (x, y)
    else:
        return x**i
Run Code Online (Sandbox Code Playgroud)

据我所知,代码中断有一个特殊原因.

python

0
推荐指数
1
解决办法
206
查看次数

变换后的更新点

我正在尝试使用更改视图位置,CGAffineTransform但转换语句不会影响它。

例如,让我们调用移动的视图movingView

一开始,movingView是在点CGPoint(x: 100, y: 100) 然后我移动movingView通过这样的代码:

movingView.transform = CGAffineTransform(translationX: 100, y: 300)
Run Code Online (Sandbox Code Playgroud)

现在如果我这样做 : print(movingView.layer.position),我仍然得到

CGPoint(x: 100, y:100)

代替

CGPoint(x: 200, y: 400)

cgaffinetransform cgpoint ios swift

0
推荐指数
1
解决办法
885
查看次数

在 C++ 中从 CString 中删除“\”

如何\从 CString 中删除此字符?

例如:我有这个内容的字符串“这是\一个字符串”

如何\从我的字符串中删除?

非常感谢。

c++ mfc visual-c++

-7
推荐指数
1
解决办法
1648
查看次数