Можно ли создать категорию (расширение), которая в конечном итоге вернет объект, выделенный в instancetype? У меня есть категория для загрузки файлов SKS, но поскольку эта категория предназначена для SKNode, тогда все остальные подклассы, такие как SKScene или SKEmitterNode и т.д., Тоже будут ее использовать.
Поэтому я просто хотел бы избежать всегда отбрасывания от SKNode до instancetype. Можно ли изменить тип возврата на instancetype и убедиться, что компилятор удовлетворен возвратным значением?
Я думаю, что могу использовать -> Self как возвращаемый тип, но потом я понятия не имею, как отличить scene от instancetype, чтобы эта вещь компилировалась..
Например:
 SKEmitterNode.unarchiveFromFile("Blah") возвращает экземпляр SKEmitterNode
extension SKNode {
    class func unarchiveFromFile(file: String) -> SKNode {
        let path = NSBundle.mainBundle().pathForResource(file, ofType: "sks")
        var sceneData = NSData.dataWithContentsOfFile(path, options: .DataReadingMappedIfSafe, error: nil)
        let unarchiver = NSKeyedUnarchiver(forReadingWithData: sceneData)
        unarchiver.setClass(self.classForKeyedUnarchiver(), forClassName: "SKScene")
        let scene = unarchiver.decodeObjectForKey(NSKeyedArchiveRootObjectKey) as SKNode
        unarchiver.finishDecoding()
        return scene
    }
}
