假设我要关闭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/