假设我要关闭USB设备。这是代表USB设备的C结构:

struct __USBDevice {

uint16_t idProduct;
io_service_t usbService;
IOUSBDeviceInterface **deviceHandle;
IOUSBInterfaceInterface **interfaceHandle;
Boolean open;

};

typedef struct __USBDevice *USBDeviceRef;


这是关闭设备的代码:

// device is a USBDeviceRef structure
// USBDeviceClose is a function member of IOUSBDeviceInterface C Pseudoclass

(*device->deviceHandle)->USBDeviceClose(device->deviceHandle);


现在,假设设备属性在obj-c类中声明

@interface Device : NSObject {

NSNumber idProduct
io_service_t usbService;
IOUSBDeviceInterface **deviceHandle;
IOUSBInterfaceInterface **interfaceHandle;
BOOL open;
}

@end


我该如何调用USBDeviceClose()?

最佳答案

有两种方法。您可以对类进行类似结构化的建模,并在声明的上方添加@public(这样语法就不会改变),也可以在接口中添加Close方法,以在内部执行相同的逻辑(但当然无需取消引用device)。

关于objective-c - 在obj-c对象而不是C结构上调用IOUSBDeviceInterface函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11424729/

10-11 21:21