是否可以创建从AVCaptureDevice继承的类?

时间:2014-07-14 05:22:49

标签: ios inheritance avcapturedevice

我正在尝试创建一个继承自AVCaptureDevice的类,如此

在MyClass.h文件中

@interface MyClass : AVCaptureDevice

但是如何在init方法中将AVCaptureDevice实例分配给“self”?

现在这是我的方法(不起作用......)

MyClass.m文件中的

- (id) init
{
    self = [super init];
    if(self)
    {
       NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
       AVCaptureDevice *captureDevice = [devices firstObject];
       self = (MyClass*)captureDevice;
       [self myClassMethod];
    }
    return self;
}

- (void) myClassMethod
{
    NSLog(@"Doesn't work");
}

我得到NSInvalidArgumentException,原因:“-[AVCaptureFigVideoDevice test]:无法识别的选择器发送到实例”,这是有道理的,因为测试不是AVCaptureDevice中的方法。

我之前做的另一种方法是在MyClass类中包含AVCaptureDevice,它可以工作。

但我仍然想知道是否我错过了一些实现这一想法的好方法。

谢谢。

1 个答案:

答案 0 :(得分:1)

AVCaptureDevice不用于子类化 如果不使用其中一个类方法,则无法创建此类的具体实例:

+ devices
+ deviceWithUniqueID:
+ defaultDeviceWithMediaType:
+ devicesWithMediaType:

您的选项要么包含实例并对其进行换行访问,要为其创建代理或某个包装器,甚至包含类别。