ImageCaptureCore macOS 10.14 to 10.15 API Differences

ICCameraDevice.h
Removed ICCameraDevice.isAccessRestrictedAppleDevice
Added ICUploadOption
Added ICDeleteResult
Added ICDeleteSuccessful
Added ICDeleteCanceled
Added ICDeleteFailed
Added ICDeleteError
Added ICDeleteErrorReadOnly
Added ICDeleteErrorFileMissing
Added ICDeleteErrorDeviceMissing
Added ICDeleteErrorCanceled
Added ICCameraDevice.ejectable
Added ICCameraDevice.locked
Added ICCameraDevice.accessRestrictedAppleDevice
Added ICCameraDevice.iCloudPhotosEnabled
Added -[ICCameraDevice requestDeleteFiles:deleteFailed:completion:]
Added -[ICCameraDeviceDelegate cameraDevice:didReceiveThumbnail:forItem:error:]
Added -[ICCameraDeviceDelegate cameraDevice:didReceiveMetadata:forItem:error:]
Added -[ICCameraDeviceDelegate cameraDeviceDidRemoveAccessRestriction:]
Added -[ICCameraDeviceDelegate cameraDeviceDidEnableAccessRestriction:]
Modified ICCameraDeviceCanTakePicture
Declaration
FromNSString *const ICCameraDeviceCanTakePicture
Toconst ICDeviceCapability ICCameraDeviceCanTakePicture

Modified ICCameraDeviceCanTakePictureUsingShutterReleaseOnCamera
Declaration
FromNSString *const ICCameraDeviceCanTakePictureUsingShutterReleaseOnCamera
Toconst ICDeviceCapability ICCameraDeviceCanTakePictureUsingShutterReleaseOnCamera

Modified ICCameraDeviceCanDeleteOneFile
Declaration
FromNSString *const ICCameraDeviceCanDeleteOneFile
Toconst ICDeviceCapability ICCameraDeviceCanDeleteOneFile

Modified ICCameraDeviceCanDeleteAllFiles
Declaration
FromNSString *const ICCameraDeviceCanDeleteAllFiles
Toconst ICDeviceCapability ICCameraDeviceCanDeleteAllFiles

Modified ICCameraDeviceCanSyncClock
Declaration
FromNSString *const ICCameraDeviceCanSyncClock
Toconst ICDeviceCapability ICCameraDeviceCanSyncClock

Modified ICCameraDeviceCanReceiveFile
Declaration
FromNSString *const ICCameraDeviceCanReceiveFile
Toconst ICDeviceCapability ICCameraDeviceCanReceiveFile

Modified ICCameraDeviceCanAcceptPTPCommands
Declaration
FromNSString *const ICCameraDeviceCanAcceptPTPCommands
Toconst ICDeviceCapability ICCameraDeviceCanAcceptPTPCommands

Modified ICCameraDevice.contentCatalogPercentCompleted
Declaration
From@property (readonly) NSUInteger contentCatalogPercentCompleted
To@property (nonatomic, readonly) NSUInteger contentCatalogPercentCompleted

Modified ICCameraDevice.contents
Declaration
From@property (readonly) NSArray<ICCameraItem *> *contents
To@property (nonatomic, readonly) NSArray<ICCameraItem *> *contents

Modified ICCameraDevice.mediaFiles
Declaration
From@property (readonly) NSArray<ICCameraItem *> *mediaFiles
To@property (nonatomic, readonly) NSArray<ICCameraItem *> *mediaFiles

Modified ICCameraDevice.mountPoint
Declaration
From@property (readonly) NSString *mountPoint
To@property (nonatomic, readonly) NSString *mountPoint

Modified ICCameraDevice.tetheredCaptureEnabled
Declaration
From@property (readonly) BOOL tetheredCaptureEnabled
To@property (nonatomic, readonly) BOOL tetheredCaptureEnabled

Modified -[ICCameraDevice requestDownloadFile:options:downloadDelegate:didDownloadSelector:contextInfo:]
Declaration
From- (void)requestDownloadFile:(ICCameraFile *)file options:(NSDictionary<NSString *,id> *)options downloadDelegate:(id<ICCameraDeviceDownloadDelegate>)downloadDelegate didDownloadSelector:(SEL)selector contextInfo:(void *)contextInfo
To- (void)requestDownloadFile:(ICCameraFile *)file options:(NSDictionary<ICDownloadOption,id> *)options downloadDelegate:(id<ICCameraDeviceDownloadDelegate>)downloadDelegate didDownloadSelector:(SEL)selector contextInfo:(void *)contextInfo

Modified -[ICCameraDevice requestUploadFile:options:uploadDelegate:didUploadSelector:contextInfo:]
Declaration
From- (void)requestUploadFile:(NSURL *)fileURL options:(NSDictionary<NSString *,id> *)options uploadDelegate:(id)uploadDelegate didUploadSelector:(SEL)selector contextInfo:(void *)contextInfo
To- (void)requestUploadFile:(NSURL *)fileURL options:(NSDictionary<ICUploadOption,id> *)options uploadDelegate:(id)uploadDelegate didUploadSelector:(SEL)selector contextInfo:(void *)contextInfo

Modified -[ICCameraDeviceDelegate cameraDevice:didAddItems:]
Optional
FromOptional
ToRequired

Modified -[ICCameraDeviceDelegate cameraDevice:didRemoveItems:]
Optional
FromOptional
ToRequired

Modified -[ICCameraDeviceDelegate deviceDidBecomeReadyWithCompleteContentCatalog:]
Declaration
From- (void)deviceDidBecomeReadyWithCompleteContentCatalog:(ICDevice *)device
To- (void)deviceDidBecomeReadyWithCompleteContentCatalog:(ICCameraDevice *)device

Modified -[ICCameraDeviceDelegate cameraDevice:didCompleteDeleteFilesWithError:]
Optional
FromRequired
ToOptional

Modified -[ICCameraDeviceDelegate cameraDevice:didAddItem:]
OptionalAvailabilityReplacement
FromRequiredAvailablenone
ToOptionalDeprecatedImplement cameraDevice:didAddItems:

Modified -[ICCameraDeviceDelegate cameraDevice:didRemoveItem:]
OptionalAvailabilityReplacement
FromRequiredAvailablenone
ToOptionalDeprecatedImplement cameraDevice:didRemoveItems:

Modified -[ICCameraDeviceDelegate cameraDevice:didReceiveThumbnailForItem:]
OptionalAvailabilityReplacement
FromRequiredAvailablenone
ToOptionalDeprecatedImplement cameraDevice:didReceiveThumbnail:forItem:error:

Modified -[ICCameraDeviceDelegate cameraDevice:didReceiveMetadataForItem:]
OptionalAvailabilityReplacement
FromRequiredAvailablenone
ToOptionalDeprecatedImplement cameraDevice:didReceiveMetadata:forItem:error:

ICCameraFile.h
Added ICCameraFile.width
Added ICCameraFile.height
Added ICCameraFile.originalFilename
Added ICCameraFile.createdFilename
Added ICCameraFile.highFramerate
Added ICCameraFile.timeLapse
Added ICCameraFile.firstPicked
Added ICCameraFile.originatingAssetID
Added ICCameraFile.groupUUID
Added ICCameraFile.gpsString
Added ICCameraFile.relatedUUID
Added ICCameraFile.burstUUID
Added ICCameraFile.burstFavorite
Added ICCameraFile.burstPicked
Added ICCameraFile.pairedRawImage
Added ICCameraFile.fileCreationDate
Added ICCameraFile.fileModificationDate
Added ICCameraFile.exifCreationDate
Added ICCameraFile.exifModificationDate
Added -[ICCameraFile requestThumbnailDataWithOptions:completion:]
Added -[ICCameraFile requestMetadataDictionaryWithOptions:completion:]
Added -[ICCameraFile requestDownloadWithOptions:completion:]
Added -[ICCameraFile requestReadDataAtOffset:length:completion:]
Modified ICCameraFile.fileSize
Declaration
From@property (readonly) off_t fileSize
To@property (nonatomic, readonly) off_t fileSize

Modified ICCameraFile.orientation
Declaration
From@property (readwrite) ICEXIFOrientationType orientation
To@property (nonatomic, readwrite) ICEXIFOrientationType orientation

Modified ICCameraFile.duration
Declaration
From@property (readonly) double duration
To@property (nonatomic, readonly) double duration

Modified ICCameraFile.sidecarFiles
Declaration
From@property (readonly) NSArray<ICCameraItem *> *sidecarFiles
To@property (nonatomic, readonly) NSArray<ICCameraItem *> *sidecarFiles

ICCameraFolder.h
Modified ICCameraFolder.contents
Declaration
From@property (readonly) NSArray<ICCameraItem *> *contents
To@property (nonatomic, readonly) NSArray<ICCameraItem *> *contents

ICCameraItem.h
Added ICCameraItemMetadataOption
Added ICCameraItemThumbnailOption
Added ICImageSourceThumbnailMaxPixelSize
Added ICImageSourceShouldCache
Added ICDownloadOption
Added ICCameraItem.thumbnail
Added ICCameraItem.metadata
Added -[ICCameraItem requestThumbnail]
Added -[ICCameraItem requestMetadata]
Added -[ICCameraItem flushThumbnailCache]
Added -[ICCameraItem flushMetadataCache]
Modified ICDownloadsDirectoryURL
Declaration
FromNSString *const ICDownloadsDirectoryURL
Toconst ICDownloadOption ICDownloadsDirectoryURL

Modified ICSaveAsFilename
Declaration
FromNSString *const ICSaveAsFilename
Toconst ICDownloadOption ICSaveAsFilename

Modified ICSavedFilename
Declaration
FromNSString *const ICSavedFilename
Toconst ICDownloadOption ICSavedFilename

Modified ICSavedAncillaryFiles
Declaration
FromNSString *const ICSavedAncillaryFiles
Toconst ICDownloadOption ICSavedAncillaryFiles

Modified ICOverwrite
Declaration
FromNSString *const ICOverwrite
Toconst ICDownloadOption ICOverwrite

Modified ICDeleteAfterSuccessfulDownload
Declaration
FromNSString *const ICDeleteAfterSuccessfulDownload
Toconst ICDownloadOption ICDeleteAfterSuccessfulDownload

Modified ICDownloadSidecarFiles
Declaration
FromNSString *const ICDownloadSidecarFiles
Toconst ICDownloadOption ICDownloadSidecarFiles

Modified ICCameraItem.device
Declaration
From@property (readonly) ICCameraDevice *device
To@property (nonatomic, readonly) ICCameraDevice *device

Modified ICCameraItem.parentFolder
Declaration
From@property (readonly) ICCameraFolder *parentFolder
To@property (nonatomic, readonly) ICCameraFolder *parentFolder

Modified ICCameraItem.name
Declaration
From@property (readonly) NSString *name
To@property (nonatomic, readonly) NSString *name

Modified ICCameraItem.UTI
Declaration
From@property (readonly) NSString *UTI
To@property (nonatomic, readonly) NSString *UTI

Modified ICCameraItem.fileSystemPath
Declaration
From@property (readonly) NSString *fileSystemPath
To@property (nonatomic, readonly) NSString *fileSystemPath

Modified ICCameraItem.locked
Declaration
From@property (readonly, getter=isLocked) BOOL locked
To@property (nonatomic, readonly, getter=isLocked) BOOL locked

Modified ICCameraItem.raw
Declaration
From@property (readonly, getter=isRaw) BOOL raw
To@property (nonatomic, readonly, getter=isRaw) BOOL raw

Modified ICCameraItem.inTemporaryStore
Declaration
From@property (readonly, getter=isInTemporaryStore) BOOL inTemporaryStore
To@property (nonatomic, readonly, getter=isInTemporaryStore) BOOL inTemporaryStore

Modified ICCameraItem.creationDate
Declaration
From@property (readonly) NSDate *creationDate
To@property (nonatomic, readonly) NSDate *creationDate

Modified ICCameraItem.modificationDate
Declaration
From@property (readonly) NSDate *modificationDate
To@property (nonatomic, readonly) NSDate *modificationDate

Modified ICCameraItem.userData
Declaration
From@property (readonly) NSMutableDictionary *userData
To@property (nonatomic, readonly) NSMutableDictionary *userData

Modified ICCameraItem.ptpObjectHandle
Declaration
From@property (readonly) unsigned int ptpObjectHandle
To@property (nonatomic, readonly) unsigned int ptpObjectHandle

Modified ICCameraItem.addedAfterContentCatalogCompleted
Declaration
From@property (readonly, getter=wasAddedAfterContentCatalogCompleted) BOOL addedAfterContentCatalogCompleted
To@property (nonatomic, readonly, getter=wasAddedAfterContentCatalogCompleted) BOOL addedAfterContentCatalogCompleted

Modified ICCameraItem.thumbnailIfAvailable
AvailabilityReplacement
FromAvailablenone
ToDeprecatedUse requestThumbnail, or requestThumbnailWithOptions:completion

Modified ICCameraItem.largeThumbnailIfAvailable
AvailabilityReplacement
FromAvailablenone
ToDeprecatedUse requestThumbnail, or requestThumbnailWithOptions:completion

Modified ICCameraItem.metadataIfAvailable
AvailabilityReplacement
FromAvailablenone
ToDeprecatedUse requestMetadata for the delegate based API, or requestMetadataDictionaryWithOptions:completion

ICCommonConstants.h
Removed ICReturnErrorDeviceEjected
ICDevice.h
Removed -[ICDeviceDelegate device:didReceiveButtonPress:]
Removed -[ICDeviceDelegate device:didReceiveCustomNotification:data:]
Removed ICDevice.shared
Removed ICDevice.hasConfigurableWiFiInterface
Removed ICDevice.fwGUID
Removed ICDevice.buttonPressed
Added ICDeviceTransport
Added ICDeviceStatus
Added ICDeviceCapability
Added ICSessionOptions
Added ICEnumerationChronologicalOrder
Added ICDeviceLocationOptions
Added ICDevice.productKind
Added -[ICDevice requestEject]
Added -[ICDevice requestOpenSessionWithOptions:completion:]
Added -[ICDevice requestCloseSessionWithOptions:completion:]
Added -[ICDevice requestEjectWithCompletion:]
Added -[ICDeviceDelegate device:didEjectWithError:]
Modified ICTransportTypeUSB
Declaration
FromNSString *const ICTransportTypeUSB
Toconst ICDeviceTransport ICTransportTypeUSB

Modified ICTransportTypeFireWire
Declaration
FromNSString *const ICTransportTypeFireWire
Toconst ICDeviceTransport ICTransportTypeFireWire

Modified ICTransportTypeBluetooth
Declaration
FromNSString *const ICTransportTypeBluetooth
Toconst ICDeviceTransport ICTransportTypeBluetooth

Modified ICTransportTypeMassStorage
Declaration
FromNSString *const ICTransportTypeMassStorage
Toconst ICDeviceTransport ICTransportTypeMassStorage

Modified ICTransportTypeTCPIP
Declaration
FromNSString *const ICTransportTypeTCPIP
Toconst ICDeviceTransport ICTransportTypeTCPIP

Modified ICStatusNotificationKey
Declaration
FromNSString *const ICStatusNotificationKey
Toconst ICDeviceStatus ICStatusNotificationKey

Modified ICStatusCodeKey
Declaration
FromNSString *const ICStatusCodeKey
Toconst ICDeviceStatus ICStatusCodeKey

Modified ICLocalizedStatusNotificationKey
Declaration
FromNSString *const ICLocalizedStatusNotificationKey
Toconst ICDeviceStatus ICLocalizedStatusNotificationKey

Modified ICDeviceCanEjectOrDisconnect
Declaration
FromNSString *const ICDeviceCanEjectOrDisconnect
Toconst ICDeviceCapability ICDeviceCanEjectOrDisconnect

Modified ICDeviceLocationDescriptionUSB
Declaration
FromNSString *const ICDeviceLocationDescriptionUSB
Toconst ICDeviceLocationOptions ICDeviceLocationDescriptionUSB

Modified ICDeviceLocationDescriptionFireWire
Declaration
FromNSString *const ICDeviceLocationDescriptionFireWire
Toconst ICDeviceLocationOptions ICDeviceLocationDescriptionFireWire

Modified ICDeviceLocationDescriptionBluetooth
Declaration
FromNSString *const ICDeviceLocationDescriptionBluetooth
Toconst ICDeviceLocationOptions ICDeviceLocationDescriptionBluetooth

Modified ICDeviceLocationDescriptionMassStorage
Declaration
FromNSString *const ICDeviceLocationDescriptionMassStorage
Toconst ICDeviceLocationOptions ICDeviceLocationDescriptionMassStorage

Modified ICDevice.delegate
Declaration
From@property (assign) id<ICDeviceDelegate> delegate
To@property (nonatomic, readwrite, assign) id<ICDeviceDelegate> delegate

Modified ICDevice.type
Declaration
From@property (readonly) ICDeviceType type
To@property (nonatomic, readonly) ICDeviceType type

Modified ICDevice.capabilities
Declaration
From@property (readonly) NSArray<NSString *> *capabilities
To@property (nonatomic, readonly) NSArray<NSString *> *capabilities

Modified ICDevice.name
Declaration
From@property (readonly) NSString *name
To@property (nonatomic, readonly, copy) NSString *name

Modified ICDevice.icon
Declaration
From@property (readonly) CGImageRef icon
To@property (nonatomic, readonly) CGImageRef icon

Modified ICDevice.transportType
Declaration
From@property (readonly) NSString *transportType
To@property (nonatomic, readonly, copy) NSString *transportType

Modified ICDevice.UUIDString
Declaration
From@property (readonly) NSString *UUIDString
To@property (nonatomic, readonly, copy) NSString *UUIDString

Modified ICDevice.locationDescription
Declaration
From@property (readonly) NSString *locationDescription
To@property (nonatomic, readonly) NSString *locationDescription

Modified ICDevice.hasOpenSession
Declaration
From@property (readonly) BOOL hasOpenSession
To@property (nonatomic, readonly) BOOL hasOpenSession

Modified ICDevice.userData
Declaration
From@property (readonly) NSMutableDictionary *userData
To@property (nonatomic, readonly) NSMutableDictionary *userData

Modified ICDevice.modulePath
Declaration
From@property (readonly) NSString *modulePath
To@property (nonatomic, readonly) NSString *modulePath

Modified ICDevice.moduleVersion
Declaration
From@property (readonly) NSString *moduleVersion
To@property (nonatomic, readonly) NSString *moduleVersion

Modified ICDevice.serialNumberString
Declaration
From@property (readonly) NSString *serialNumberString
To@property (nonatomic, readonly) NSString *serialNumberString

Modified ICDevice.usbLocationID
Declaration
From@property (readonly) int usbLocationID
To@property (nonatomic, readonly) int usbLocationID

Modified ICDevice.usbProductID
Declaration
From@property (readonly) int usbProductID
To@property (nonatomic, readonly) int usbProductID

Modified ICDevice.usbVendorID
Declaration
From@property (readonly) int usbVendorID
To@property (nonatomic, readonly) int usbVendorID

Modified ICDevice.autolaunchApplicationPath
Declaration
From@property (readwrite, copy) NSString *autolaunchApplicationPath
To@property (nonatomic, readwrite, copy) NSString *autolaunchApplicationPath

Modified ICDevice.persistentIDString
Declaration
From@property (readonly) NSString *persistentIDString
To@property (nonatomic, readonly) NSString *persistentIDString

Modified -[ICDevice requestEjectOrDisconnect]
AvailabilityReplacement
FromAvailablenone
ToDeprecatedUse requestEject, or requestEjectWithCompletion:

Modified -[ICDevice requestYield]
AvailabilityDeprecation Message
FromAvailablenone
ToDeprecatedRequesting a device yield is no longer avaialble

Modified ICDevice.moduleExecutableArchitecture
AvailabilityDeprecation Message
FromAvailablenone
ToDeprecatedModule executable architecture is no longer available

Modified -[ICDeviceDelegate device:didCloseSessionWithError:]
Optional
FromOptional
ToRequired

Modified -[ICDeviceDelegate device:didOpenSessionWithError:]
Optional
FromOptional
ToRequired

Modified -[ICDeviceDelegate device:didReceiveStatusInformation:]
Declaration
From- (void)device:(ICDevice *)device didReceiveStatusInformation:(NSDictionary<NSString *,id> *)status
To- (void)device:(ICDevice *)device didReceiveStatusInformation:(NSDictionary<ICDeviceStatus,id> *)status

ImageCaptureConstants.h
Added #def ICRunLoopMode
Added ICErrorDomain
Added ICReturnCodeDeviceOffset
Added ICReturnCodeDeviceConnection
Added ICReturnThumbnailErrorCode
Added ICReturnMetadataErrorCode
Added ICReturnConnectionErrorCode
Added ICReturnConnectionDriverExited
Added ICReturnConnectionClosedSessionSuddenly
Added ICReturnConnectionEjectedSuddenly
Added ICReturnConnectionSessionAlreadyOpen
Added ICReturnConnectionEjectFailed
Added ICReturnConnectionFailedToOpen
Added ICReturnConnectionFailedToOpenDevice
Added ICLegacyReturnCode
Added ICLegacyReturnCodeCommunicationErr
Added ICLegacyReturnCodeDeviceNotFoundErr
Added ICLegacyReturnCodeDeviceNotOpenErr
Added ICLegacyReturnCodeFileCorruptedErr
Added ICLegacyReturnCodeIOPendingErr
Added ICLegacyReturnCodeInvalidObjectErr
Added ICLegacyReturnCodeInvalidPropertyErr
Added ICLegacyReturnCodeIndexOutOfRangeErr
Added ICLegacyReturnCodePropertyTypeNotFoundErr
Added ICLegacyReturnCodeCannotYieldDevice
Added ICLegacyReturnCodeDataTypeNotFoundErr
Added ICLegacyReturnCodeDeviceMemoryAllocationErr
Added ICLegacyReturnCodeDeviceInternalErr
Added ICLegacyReturnCodeDeviceInvalidParamErr
Added ICLegacyReturnCodeDeviceAlreadyOpenErr
Added ICLegacyReturnCodeDeviceLocationIDNotFoundErr
Added ICLegacyReturnCodeDeviceGUIDNotFoundErr
Added ICLegacyReturnCodeDeviceIOServicePathNotFoundErr
Added ICLegacyReturnCodeDeviceUnsupportedErr
Added ICLegacyReturnCodeFrameworkInternalErr
Added ICLegacyReturnCodeExtensionInternalErr
Added ICLegacyReturnCodeInvalidSessionErr
Added ICReturnExFATVolumeInvalid
ImageCapturePlatform.h
Removed #def IMAGECAPTURE_AVAILABLE
Removed #def IMAGECAPTURE_DEPRECATED
Removed #def IMAGECAPTURE_CLASS_AVAILABLE
Removed #def IMAGECAPTURE_CLASS_DEPRECATED
Removed #def IMAGECAPTURE_ENUM_AVAILABLE
Removed #def IMAGECAPTURE_ENUM_DEPRECATED
Added #def IC_AVAILABLE
Added #def IC_UNAVAILABLE
Added #def IC_DEPRECATED
Added #def IC_DEPRECATED_WITH_REPLACEMENT
Added #def ICPoint
Added #def ICRect
Added #def ICSize