0

假设我想关闭一个 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() ?

4

2 回答 2

1

有两种方法。您可以将类建模为类似于结构,并@public在声明上方添加(这样语法不会改变),或者您可以Close向接口添加一个方法,该方法将在内部执行相同的逻辑(但无需取消device引用课程)。

于 2012-07-11T02:42:43.847 回答
0

无需多余。Ivar 可以是结构。

@interface Device : NSObject {

USBDeviceRef deviceRef;
}

@end

#implementation Device

- (void) close {
USBDeviceClose(deviceRef->deviceHandle);
}
于 2012-07-11T03:11:21.270 回答