gpt4 book ai didi

swift - 更改另一个模块中 var 的初始值

转载 作者:行者123 更新时间:2023-11-30 13:18:37 24 4
gpt4 key购买 nike

我正在使用此模块来显示图像: https://github.com/huynguyencong/ImageScrollView/blob/master/Sources/ImageScrollView.swift

我已使用 CocoaPods 将其添加到我的项目中,并且我想更改 var“maxScaleFromMinScale”的值。我就是不知道怎么办。

首先,我尝试覆盖 var,这是不可能的。

然后,我尝试通过复制和覆盖由模块创建者覆盖的相同初始化器来覆盖初始化器。

override init(frame: CGRect) {
super.init(frame: frame)
}

required public init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}

这不起作用,它在顶部初始化程序上给了我一个错误,说我没有覆盖指定的初始化程序。感觉我无法覆盖它,因为它不像第二个那样公开。对吗?

我尝试的最后一件事是进行扩展:

extension ImageScrollView {
public func setMaxScale(scale: CGFloat) {
maxScaleFromMinScale = scale
}
}

这也不起作用,maxScaleFromMinScale 是一个未解析的标识符。这似乎也是因为它是一个内部变量,我无权访问它(另一个模块)。这是否意味着我唯一的选择是复制整个文件并修改源代码。希望有一个最小且优雅的解决方案。

如果是这种情况,为什么您可以覆盖内置的 UIKit 元素,但不能覆盖我使用 CocoaPods 下载的这个元素。

最佳答案

是的,您无法覆盖变量/函数,因为它是内部。这就是访问修饰符的要点。

某些 UIKit 函数是公共(public),因此您可以覆盖它们。

关于swift - 更改另一个模块中 var 的初始值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37986651/

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