Swift:如何在子类的init方法中命令指令

时间:2015-11-20 09:56:55

标签: swift initialization

我需要实现这个类:

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方法。

我该如何解决这个问题?

1 个答案:

答案 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