import Foundation
import MobileCoreServices
func checkFileExtension(fileName: NSString){
println(fileName)
var fileExtension:CFStringRef = fileName.pathExtension
println(fileExtension)
var fileUTI:CFStringRef = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, fileExtension, nil)
println(fileUTI)
let testBool = UTTypeConformsTo(fileUTI, kUTTypeImage) != 0
if testBool{
println("image")
}
}
我得到這個錯誤UTTypeCreatePreferredIdentifierForTag和CFStringRef斯威夫特
錯誤: '非託管' 是無法轉換爲 'CFStringRef'
在行
VAR fileUTI: CFStringRef = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension,fileExtension,nil)
有什麼想法?由於
takeRetainedValue的VS takeUnretainedValue選擇僅依賴(我理解文檔)上的核心基礎功能是否返回(+1)保留的對象或不。 UTTypeCreatePreferredIdentifierForTag()在其名稱中有「Create」,所以根據返回一個(1)保留對象的內存管理規則,調用者必須最終釋放該對象。所以你必須在這裏調用takeRetainedValue,否則這個對象永遠不會被釋放,並且你有泄漏。 – 2014-10-29 16:34:48
在https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFMemoryMgmt/Concepts/Ownership.html中比較「創建規則」。 – 2014-10-29 16:38:21
感謝您的全面回答!真的幫助我! – pbeo 2014-10-29 16:39:12