我需要实现这个类:
class PinImageView: UIImageView {
var lastLocation:CGPoint
var panRecognizer:UIPanGestureRecognizer
init(imageIcon: UIImage?, location:CGPoint) {
self.lastLocation = location
super.init(image: imageIcon)
self.center = location
self.panRecognizer = UIPanGestureRecognizer(target:self, action:"detectPan:")
self.gestureRecognizers = [panRecognizer]
}
}
我认为有一种"循环"问题是因为编译器要求我在调用panRecognizer
之前初始化super.init(image: imageIcon)
但panRecognizer
已将self
作为目标,我们只能在调用{{1}之后使用self
方法。
我该如何解决这个问题?
答案 0 :(得分:3)
这是一个非可选的实例变量
#include <linux/module.h>
#include <linux/init.h>
static int param_int = 0xBABE;
module_param(param_int, int, 0);
MODULE_PARM_DESC(param_int, "Pass any integer from insmod, it will be printed");
static int __init ch03_lab1_init(void)
{
pr_info("Chapter 03 Lab1\n");
pr_info("param_int = 0x%x\n",param_int);
return 0;
}
static void __exit ch03_lab1_exit(void)
{
pr_info("Chapter 03 Lab1 Exit\n");
}
module_init(ch03_lab1_init);
module_exit(ch03_lab1_exit);
MODULE_AUTHOR("SATHYA");
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("WLDD Chapter3 Lab 1 example");
MODULE_VERSION("2.0");
所以你必须在完成var panRecognizer:UIPanGestureRecognizer
之前为其设置一个值,特别是如你所见,在调用init
之前。
不一定非常需要。相反,它可以是一个延迟加载实例变量,因此它是在您第一次请求它时创建的。
现在,当您super
设置实例时,请调用super,然后添加手势识别器(将在此过程中创建手势)。
init