Well, it turned out that Rob Napier was right. It was one single file (actually one method) that was causing the compiler to go berzek.
Now don’t get me wrong. Swift does recompile all your files each time, but the great thing now, is that Apple added real-time compilation feedback over the files it compiles, so Xcode 6 GM now shows which Swift files are being compiled and the status of compilation in real time as you can see in this screenshot:
So this comes very handy to know which of your files is taking so long. In my case it was this piece of code:
var dic = super.json().mutableCopy() as NSMutableDictionary
dic.addEntriesFromDictionary([
"url" : self.url?.absoluteString ?? "",
"title" : self.title ?? ""
])
return dic.copy() as NSDictionary
because the property title
was of type var title:String?
and not NSString
. The compiler was going crazy when adding it to the NSMutableDictionary
.
Changing it to:
var dic = super.json().mutableCopy() as NSMutableDictionary
dic.addEntriesFromDictionary([
"url" : self.url?.absoluteString ?? "",
"title" : NSString(string: self.title ?? "")
])
return dic.copy() as NSDictionary
made the compilation go from 10/15 seconds (maybe even more) down to a single second… amazing.