swift - 从子类访问在父类方法内部声明的变量(swift)
问题描述
我相当确定我在这里遗漏了一些明显的东西和/或做错了。
我有一个带有 handleTapped() 函数的基类,用于处理被点击的按钮。
在子类中,我想覆盖该函数,但需要访问我在父类的 handleTapped() 函数中声明的变量。
前任:
class ParentClass {
@objc func handleTapped(sender: UITapGestureRecognizer) {
var a = [Int]()
var b = 10
if a[1] == b {
// do something
}
}
}
class SubClass: ParentClass {
@objc override func handleTapped(sender: UITapGestureRecognizer) {
super.handleTapped(sender: sender)
if a[1] == b {
// do something else
}
}
}
解决方案
函数中声明的变量不能从该范围之外访问,包括通过覆盖其行为的方法(除非您将它们用作该函数的返回,我们在这里不能这样做)。
在这种情况下,您需要将必要的信息存储在父类本身中,并确保正确设置访问权限(内部或公共,取决于您的项目的设置方式),以便子类可以访问和修改那个数据。
或者,可能有另一种方法来实现这一点。这可能是一个候选,其中重复代码是将数据公开给所有子类的更可取的选择。
推荐阅读
- mongodb - createQueryBuilder 中的 AND 条件中的 OR 条件取决于条件
- java - 理解 JavaPairRDD.reduceByKey 函数
- javascript - 当存在多个元素时,单击一次更新值
- python - 具有多维值的 DataFrame
- android - 在 Android Studio 中选择要被自动缩进忽略的代码
- python - 特征提取 TensorFlow Estimator
- java - 将多部分文件上传到 AWS,而不在本地保存
- c# - Unity如何将射击和子弹更新到自定义服务器?
- laravel - Laravel 5.5 通过 eloquent 模型获取数据的问题
- c# - Log4net 处理多租户的最佳实践(1 个输出文件)