Swift 2不能用types的参数列表调用'FSEventStreamCreate'

使用Swift 2和Xcode 7 beta 2(Build:7A121l)我使用FSEventStream API和@convention(c)得到这个编译错误。

任何build议将是真棒,谢谢!

internal class FileSystem { init () { let allocator: CFAllocator? = kCFAllocatorDefault // Create FSEventStream and return valid FSEventStreamRef // Alias FSEventStreamCallback - CFunction typealias FSEventStreamCallback = @convention(c) (ConstFSEventStreamRef, UnsafeMutablePointer<Void>, UInt, UnsafeMutablePointer<Void>, UnsafePointer<FSEventStreamEventFlags>, UnsafePointer<FSEventStreamEventId>) -> Void let callback: FSEventStreamCallback = { (streamRef, clientCallBackInfo, numEvents, eventPaths, eventFlags, eventIds) -> Void in print ("changed") // handle file event } let context: UnsafeMutablePointer<FSEventStreamContext> = nil let pathsToWatch: CFArray = [NSHomeDirectory() + "/Dir"] let sinceWhen: FSEventStreamEventId = UInt64(kFSEventStreamEventIdSinceNow) let latency: CFTimeInterval = 1.0 let flags: FSEventStreamCreateFlags = UInt32(kFSEventStreamCreateFlagNone) let eventStream = FSEventStreamCreate( allocator, callback, context, pathsToWatch, sinceWhen, latency, flags ) FSEventStreamScheduleWithRunLoop(eventStream, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode) FSEventStreamStart(eventStream) } } 

您正在使用错误的签名(UInt不是Int):

 typealias FSEventStreamCallback = @convention(c) (ConstFSEventStreamRef, UnsafeMutablePointer<Void>, Int, UnsafeMutablePointer<Void>, UnsafePointer<FSEventStreamEventFlags>, UnsafePointer<FSEventStreamEventId>) -> Void 

这编译罚款:

 init () { let allocator: CFAllocator? = kCFAllocatorDefault // Create FSEventStream and return valid FSEventStreamRef // Alias FSEventStreamCallback - CFunction typealias FSEventStreamCallback = @convention(c) (ConstFSEventStreamRef, UnsafeMutablePointer<Void>, Int, UnsafeMutablePointer<Void>, UnsafePointer<FSEventStreamEventFlags>, UnsafePointer<FSEventStreamEventId>) -> Void let callback: FSEventStreamCallback = { (streamRef, clientCallBackInfo, numEvents, eventPaths, eventFlags, eventIds) -> Void in print ("changed") // handle file event } let context: UnsafeMutablePointer<FSEventStreamContext> = nil let pathsToWatch: CFArray = [NSHomeDirectory() + "/Dir"] let sinceWhen: FSEventStreamEventId = UInt64(kFSEventStreamEventIdSinceNow) let latency: CFTimeInterval = 1.0 let flags: FSEventStreamCreateFlags = UInt32(kFSEventStreamCreateFlagNone) let eventStream = FSEventStreamCreate( allocator, callback, context, pathsToWatch, sinceWhen, latency, flags ) FSEventStreamScheduleWithRunLoop(eventStream, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode) FSEventStreamStart(eventStream) }