2016-03-07 72 views
0

如何定义协议斯威夫特:(Swift:如何返回Class <UITableViewDataSource>?

@protocol Protocol <NSObject> 

- (Class<UITableViewDataSource>)generateObject; 

@end 

编辑:如果我想在OC定义一个函数是这样的:

- (UIViewController<UITableViewDataSource>)generateObject; 

雨燕风格类似下面的,对不对?

func generateObject() -> UITableViewDataSource 

我觉得这种方式忽略了一些类型检查...有没有更好的方式迅速做到这一点?

回答

0
func generateObject() -> UITableViewDataSource 
0

应该比较像这样的迅速,

protocol Protocol: NSObjectProtocol { 
    func generateObject() -> UITableViewDataSource 
} 
+0

返回值是一个不是类的实例吗? – Bannings

+0

这就是返回类型的含义。您无法通过任何方式返回协议或实例化协议。这只意味着你将返回一个符合UITableViewDataSource协议的类。 – Sandeep

0

试试这个:

protocol Protocol: NSObjectProtocol { 
    func generateObject() -> UITableViewDataSource.Type 
} 
0

你在一个非常相似的方式定义协议类,结构和枚举:

protocol Protocol: NSObjectProtocol 
{ 
    func generateObject() -> UITableViewDataSource 
} 

欲了解更多请参阅官方Apple Doc