我最近一直在学习Swift。 我决定编写一个混合的Swift / Objective-C应用程序,它使用两种语言实现的相同algorithm进行计算密集型任务。 该程序计算大量素数。 我定义了一个协议,Swift和Objective-C版本的计算对象都应该符合。 这些对象都是单例,所以我在Objective-C中创build了一个典型的单例访问方法: + (NSObject <CalcPrimesProtocol> *) sharedInstance; 整个协议看起来像这样: #import <Foundation/Foundation.h> @class ComputeRecord; typedef void (^updateDisplayBlock)(void); typedef void (^calcPrimesCompletionBlock)(void); @protocol CalcPrimesProtocol <NSObject> – (void) calcPrimesWithComputeRecord: (ComputeRecord *) aComputeRecord withUpdateDisplayBlock: (updateDisplayBlock) theUpdateDisplayBlock andCompletionBlock: (calcPrimesCompletionBlock) theCalcPrimesCompletionBlock; @optional //Without this @optional line, the build fails. + (NSObject <CalcPrimesProtocol> *) sharedInstance; @end Objective-C版本的类实现了上面定义的方法,不用担心。 swift版本有一个方法: class […]