---
title: ICDevice
framework: imagecapturecore
role: symbol
role_heading: Class
path: imagecapturecore/icdevice
---

# ICDevice

An abstract object that represents a device.

## Declaration

```swift
class ICDevice
```

## Overview

Overview The device browser uses the concrete subclasses ICCameraDevice and ICScannerDevice to represent the cameras and scanners it finds.

## Topics

### Identifying a Device

- [name](imagecapturecore/icdevice/name.md)
- [productKind](imagecapturecore/icdevice/productkind.md)
- [icon](imagecapturecore/icdevice/icon.md)
- [uuidString](imagecapturecore/icdevice/uuidstring.md)
- [persistentIDString](imagecapturecore/icdevice/persistentidstring.md)
- [serialNumberString](imagecapturecore/icdevice/serialnumberstring.md)

### Inspecting a Device’s Type and Location

- [type](imagecapturecore/icdevice/type.md)
- [ICDeviceType](imagecapturecore/icdevicetype.md)
- [ICDeviceTypeMask](imagecapturecore/icdevicetypemask.md)
- [locationDescription](imagecapturecore/icdevice/locationdescription.md)
- [modulePath](imagecapturecore/icdevice/modulepath.md)
- [moduleVersion](imagecapturecore/icdevice/moduleversion.md)
- [ICDeviceLocationType](imagecapturecore/icdevicelocationtype.md)
- [ICDeviceLocationTypeMask](imagecapturecore/icdevicelocationtypemask.md)
- [ICDeviceLocationOptions](imagecapturecore/icdevicelocationoptions.md)
- [usbLocationID](imagecapturecore/icdevice/usblocationid.md)
- [usbProductID](imagecapturecore/icdevice/usbproductid.md)
- [usbVendorID](imagecapturecore/icdevice/usbvendorid.md)

### Inspecting a Device’s Transport Type

- [transportType](imagecapturecore/icdevice/transporttype.md)
- [ICDeviceTransport](imagecapturecore/icdevicetransport.md)

### Inspecting a Device’s Capabilities

- [capabilities](imagecapturecore/icdevice/capabilities.md)
- [ICDeviceCapability](imagecapturecore/icdevicecapability.md)
- [ICSessionOptions](imagecapturecore/icsessionoptions.md)

### Subscribing to Device Status Notifications

- [ICDeviceStatus](imagecapturecore/icdevicestatus.md)

### Managing a Device

- [delegate](imagecapturecore/icdevice/delegate.md)
- [ICDeviceDelegate](imagecapturecore/icdevicedelegate.md)
- [hasOpenSession](imagecapturecore/icdevice/hasopensession.md)
- [requestOpenSession()](imagecapturecore/icdevice/requestopensession().md)
- [requestOpenSession(options:completion:)](imagecapturecore/icdevice/requestopensession(options:completion:).md)
- [requestSendMessage(_:outData:maxReturnedDataSize:sendMessageDelegate:didSendMessageSelector:contextInfo:)](imagecapturecore/icdevice/requestsendmessage(_:outdata:maxreturneddatasize:sendmessagedelegate:didsendmessageselector:contextinfo:).md)
- [requestCloseSession()](imagecapturecore/icdevice/requestclosesession().md)
- [requestCloseSession(options:completion:)](imagecapturecore/icdevice/requestclosesession(options:completion:).md)
- [requestEject()](imagecapturecore/icdevice/requesteject().md)
- [requestEject(completion:)](imagecapturecore/icdevice/requesteject(completion:).md)

### Configuring a Device’s Characteristics

- [userData](imagecapturecore/icdevice/userdata.md)
- [autolaunchApplicationPath](imagecapturecore/icdevice/autolaunchapplicationpath.md)
- [isRemote](imagecapturecore/icdevice/isremote.md)

### Deprecated Symbols

- [requestEjectOrDisconnect()](imagecapturecore/icdevice/requestejectordisconnect().md)
- [requestYield()](imagecapturecore/icdevice/requestyield().md)
- [moduleExecutableArchitecture](imagecapturecore/icdevice/moduleexecutablearchitecture.md)

### Instance Properties

- [systemSymbolName](imagecapturecore/icdevice/systemsymbolname.md)

## Relationships

### Inherits From

- [NSObject](objectivec/nsobject-swift.class.md)

### Inherited By

- [ICCameraDevice](imagecapturecore/iccameradevice.md)
- [ICScannerDevice](imagecapturecore/icscannerdevice.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)

## See Also

### Browsing Devices

- [isBrowsing](imagecapturecore/icdevicebrowser/isbrowsing.md)
- [devices](imagecapturecore/icdevicebrowser/devices.md)
- [browsedDeviceTypeMask](imagecapturecore/icdevicebrowser/browseddevicetypemask.md)
- [start()](imagecapturecore/icdevicebrowser/start().md)
- [stop()](imagecapturecore/icdevicebrowser/stop().md)
