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

2つの方法があります。構造体と同様にクラスをモデル化し、@public宣言の上に追加する(構文が変更されないようにする)か、Close内部で同じロジックを実行するメソッドをインターフェイスに追加することができます(ただしdevice、コース)。

于 2012-07-11T02:42:43.847 に答える
0

冗長である必要はありません。Ivarsは構造体にすることができます。

@interface Device : NSObject {

USBDeviceRef deviceRef;
}

@end

#implementation Device

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