@@ -199,10 +199,10 @@ class Arm64DDC: NSObject {
199199 // Returns EDID UUDI, Product Name and Serial Number in an IOregService if it is found using the provided io_service_t pointing to a AppleCDC2 item in the ioreg tree
200200 private static func getIORegServiceAppleCDC2Properties( service: io_service_t ) -> IOregService {
201201 var ioregService = IOregService ( )
202- if let unmanagedEdidUUID = IORegistryEntryCreateCFProperty ( service, CFStringCreateWithCString ( kCFAllocatorDefault , " EDID UUID " , kCFStringEncodingASCII ) , kCFAllocatorDefault, IOOptionBits ( kIORegistryIterateRecursively) ) , let edidUUID = unmanagedEdidUUID. takeRetainedValue ( ) as? String {
202+ if let unmanagedEdidUUID = IORegistryEntryCreateCFProperty ( service, " EDID UUID " as CFString , kCFAllocatorDefault, IOOptionBits ( kIORegistryIterateRecursively) ) , let edidUUID = unmanagedEdidUUID. takeRetainedValue ( ) as? String {
203203 ioregService. edidUUID = edidUUID
204204 }
205- if let unmanagedDisplayAttrs = IORegistryEntryCreateCFProperty ( service, CFStringCreateWithCString ( kCFAllocatorDefault , " DisplayAttributes " , kCFStringEncodingASCII ) , kCFAllocatorDefault, IOOptionBits ( kIORegistryIterateRecursively) ) , let displayAttrs = unmanagedDisplayAttrs. takeRetainedValue ( ) as? NSDictionary , let productAttrs = displayAttrs. value ( forKey: " ProductAttributes " ) as? NSDictionary {
205+ if let unmanagedDisplayAttrs = IORegistryEntryCreateCFProperty ( service, " DisplayAttributes " as CFString , kCFAllocatorDefault, IOOptionBits ( kIORegistryIterateRecursively) ) , let displayAttrs = unmanagedDisplayAttrs. takeRetainedValue ( ) as? NSDictionary , let productAttrs = displayAttrs. value ( forKey: " ProductAttributes " ) as? NSDictionary {
206206 if let manufacturerID = productAttrs. value ( forKey: " ManufacturerID " ) as? String {
207207 ioregService. manufacturerID = manufacturerID
208208 }
@@ -213,7 +213,7 @@ class Arm64DDC: NSObject {
213213 ioregService. serialNumber = serialNumber
214214 }
215215 }
216- if let unmanagedTransport = IORegistryEntryCreateCFProperty ( service, CFStringCreateWithCString ( kCFAllocatorDefault , " Transport " , kCFStringEncodingASCII ) , kCFAllocatorDefault, IOOptionBits ( kIORegistryIterateRecursively) ) , let transport = unmanagedTransport. takeRetainedValue ( ) as? NSDictionary {
216+ if let unmanagedTransport = IORegistryEntryCreateCFProperty ( service, " Transport " as CFString , kCFAllocatorDefault, IOOptionBits ( kIORegistryIterateRecursively) ) , let transport = unmanagedTransport. takeRetainedValue ( ) as? NSDictionary {
217217 if let upstream = transport. value ( forKey: " Upstream " ) as? String {
218218 ioregService. transportUpstream = upstream
219219 }
@@ -226,7 +226,7 @@ class Arm64DDC: NSObject {
226226
227227 // Sets up the service in an IOregService if it is found using the provided io_service_t pointing to a DCPAVServiceProxy item in the ioreg tree
228228 private static func setIORegServiceDCPAVServiceProxy( service: io_service_t , ioregService: inout IOregService ) {
229- if let unmanagedLocation = IORegistryEntryCreateCFProperty ( service, CFStringCreateWithCString ( kCFAllocatorDefault , " Location " , kCFStringEncodingASCII ) , kCFAllocatorDefault, IOOptionBits ( kIORegistryIterateRecursively) ) , let location = unmanagedLocation. takeRetainedValue ( ) as? String {
229+ if let unmanagedLocation = IORegistryEntryCreateCFProperty ( service, " Location " as CFString , kCFAllocatorDefault, IOOptionBits ( kIORegistryIterateRecursively) ) , let location = unmanagedLocation. takeRetainedValue ( ) as? String {
230230 ioregService. location = location
231231 if location == " External " {
232232 ioregService. service = IOAVServiceCreateWithService ( kCFAllocatorDefault, service) ? . takeRetainedValue ( ) as IOAVService
@@ -239,7 +239,13 @@ class Arm64DDC: NSObject {
239239 var serviceLocation = 0
240240 var ioregServicesForMatching : [ IOregService ] = [ ]
241241 let ioregRoot : io_registry_entry_t = IORegistryGetRootEntry ( kIOMasterPortDefault)
242+ defer {
243+ IOObjectRelease ( ioregRoot)
244+ }
242245 var iterator = io_iterator_t ( )
246+ defer {
247+ IOObjectRelease ( iterator)
248+ }
243249 var ioregService = IOregService ( )
244250 guard IORegistryEntryCreateIterator ( ioregRoot, " IOService " , IOOptionBits ( kIORegistryIterateRecursively) , & iterator) == KERN_SUCCESS else {
245251 return ioregServicesForMatching
0 commit comments