gpt4 book ai didi

ios - 从初始化程序返回之前,不会在所有路径上调用 super init

转载 作者:搜寻专家 更新时间:2023-10-31 22:20:02 25 4
gpt4 key购买 nike

我制作了一个包装 Alamofire 的框架。

在我的框架中测试时(在测试目标中)我有这段代码可以正常工作。

import Foundation
@testable import NetworkManager

class MockRouter: Router {


enum APICalls {
case func1
case func2
}

var calls: APICalls!

init(calls: APICalls) {
self.calls = calls
}

}

当我将它作为框架添加到不同的项目时

import Foundation
import NetworkManager

class JokesRouter: Router {

enum APICalls {
case func1
case func2
}

var calls: APICalls!

init(calls: APICalls) {
self.calls = calls
}


}

我得到一个错误:

super init isn't called on all paths before returning from initializer

所以我添加了 Super.init()

init(calls: APICalls) {
super.init()
self.calls = calls
}

现在我得到这个错误:

super.init cannot be called outside of an initializer

知道问题出在哪里吗?

最佳答案

您需要在 Router 中声明一个空的 public init() {}

虽然这是一个神秘的错误,但问题在于子类无法调用 super.init(),因为除非您声明,否则无法在 NetworkManager 模块之外访问该初始化程序它作为 public。默认情况下,Router 中自动生成的 init() 不是public

它在您的测试类中起作用,因为 @testable import 回避了默认的 internal 访问限制。

关于ios - 从初始化程序返回之前,不会在所有路径上调用 super init,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40997236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com