无法使用“(Unmanaged<CFHTTPMessage>!)”类型的参数列表调用 'CFHTTPMessageCopySerializedMessage'
Cannot invoke 'CFHTTPMessageCopySerializedMessage' with an argument list of type '(Unmanaged<CFHTTPMessage>!)'
我按照 Apple 的文档进行操作,但是在 Swift 中,我遇到了这个错误。
let url = "http://www.apple.com"
let myURL = CFURLCreateWithString(kCFAllocatorDefault, url, nil);
let myRequest = CFHTTPMessageCreateRequest(kCFAllocatorDefault, "GET", myURL, kCFHTTPVersion1_1)
let mySerializedRequest = CFHTTPMessageCopySerializedMessage(myRequest)
无法使用“(Unmanaged< CFHTTPMessage>!)”类型的参数列表调用 'CFHTTPMessageCopySerializedMessage'
这是您的工作代码:
let url = "http://www.apple.com"
let myURL = CFURLCreateWithString(kCFAllocatorDefault, url, nil)
let myRequest = CFHTTPMessageCreateRequest(kCFAllocatorDefault, "GET", myURL, kCFHTTPVersion1_1).takeRetainedValue()
let mySerializedRequest = CFHTTPMessageCopySerializedMessage(myRequest).takeRetainedValue()
当非托管对象具有 +1
保留计数并且您希望 ARC 在您完成后负责释放对象时,您使用 takeRetainedValue
。
在你的例子中,CFHTTPMessageCopySerializedMessage
的定义是:
func CFHTTPMessageCopySerializedMessage(message: CFHTTPMessage!) -> Unmanaged<CFData>!
所以你必须传递 CFHTTPMessage
类型的参数,你的 myRequest
类型没有使用 takeRetainedValue()
是 Unmanaged<CFHTTPMessage>!
所以 CFHTTPMessageCopySerializedMessage
永远不会接受它这就是为什么你必须像这样在最后添加 takeRetainedValue()
:
let myRequest = CFHTTPMessageCreateRequest(kCFAllocatorDefault, "GET", myURL, kCFHTTPVersion1_1).takeRetainedValue()
它会很好地工作。
我按照 Apple 的文档进行操作,但是在 Swift 中,我遇到了这个错误。
let url = "http://www.apple.com"
let myURL = CFURLCreateWithString(kCFAllocatorDefault, url, nil);
let myRequest = CFHTTPMessageCreateRequest(kCFAllocatorDefault, "GET", myURL, kCFHTTPVersion1_1)
let mySerializedRequest = CFHTTPMessageCopySerializedMessage(myRequest)
无法使用“(Unmanaged< CFHTTPMessage>!)”类型的参数列表调用 'CFHTTPMessageCopySerializedMessage'
这是您的工作代码:
let url = "http://www.apple.com"
let myURL = CFURLCreateWithString(kCFAllocatorDefault, url, nil)
let myRequest = CFHTTPMessageCreateRequest(kCFAllocatorDefault, "GET", myURL, kCFHTTPVersion1_1).takeRetainedValue()
let mySerializedRequest = CFHTTPMessageCopySerializedMessage(myRequest).takeRetainedValue()
当非托管对象具有 +1
保留计数并且您希望 ARC 在您完成后负责释放对象时,您使用 takeRetainedValue
。
在你的例子中,CFHTTPMessageCopySerializedMessage
的定义是:
func CFHTTPMessageCopySerializedMessage(message: CFHTTPMessage!) -> Unmanaged<CFData>!
所以你必须传递 CFHTTPMessage
类型的参数,你的 myRequest
类型没有使用 takeRetainedValue()
是 Unmanaged<CFHTTPMessage>!
所以 CFHTTPMessageCopySerializedMessage
永远不会接受它这就是为什么你必须像这样在最后添加 takeRetainedValue()
:
let myRequest = CFHTTPMessageCreateRequest(kCFAllocatorDefault, "GET", myURL, kCFHTTPVersion1_1).takeRetainedValue()
它会很好地工作。