我正在尝试创建一个从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]:
无法识别的选择器发送到实例”,这是有道理的,因为test不是AVCaptureDevice中的方法。我之前做过的另一种方法是在MyClass类中包含AVCaptureDevice,该方法有效。
但是我仍然想知道我是否错过实现这种想法的一些好的方法。
谢谢。
最佳答案
AVCaptureDevice不适用于子类化。
如果不使用类方法之一,则无法创建此类的具体实例:
+ devices
+ deviceWithUniqueID:
+ defaultDeviceWithMediaType:
+ devicesWithMediaType:
您的选项包括包含实例并对其进行包装访问,为其创建代理或某些包装,甚至是类别。