问题
My code suddenly can't be compiled in Xcode 6.1 (I'm sure it's working in Xcode 6 GM and beta version). It shows the error message:
'NSInvocationOperation' is unavailable
My code is:
let operation = NSInvocationOperation(target:self, selector:"backgroundRun:", object:self)
Can anybody help? Thanks.
回答1:
As of Xcode 6.1, NSInvocation
is disabled in Swift, therefore, NSInvocationOperation
is disabled too. See this thread in Developer Forum
Because it's not type-safe or ARC-safe. Even in Objective-C it's very very easy to shoot yourself in the foot trying to use it, especially under ARC. Use closures/blocks instead.
You have to use NSBlockOperation
in Swift.
or addOperationWithBlock
to NSOperationQueue
queue.addOperationWithBlock { [weak self] in
self?.backgroundRun(self)
return
}
来源:https://stackoverflow.com/questions/26644477/nsinvocationoperation-is-unavailable-in-xcode-6-1