所以我有这个功能:
override func sendRequest(_ pageIndex: Int) -> CSResponse<AnyObject> & CSListData {
return server.loadUserArticles(pageIndex)
}
它工作并调用目标c函数
- (CSResponse <CSListData> *)loadUserArticles:(NSInteger)pageIndex;
我正在查找文档,但找不到解释,CSListData是objc协议,我正试图编写这样的东西
override func sendRequest<T : AnyObject & CSListData >(_ pageIndex: Int) -> CSResponse<T> {
return server.loadUserArticles(pageIndex)
}
但遗憾的是,编译时并没有出现错误,因为我正在用这种语法将它赋给objective c中的属性
@property(nonatomic) CSResponse <CSListData> *(^onLoadList)(NSInteger);
错误:
Error:(26, 43) cannot assign value of type '(Int) -> CSResponse<_>' to type '(Int) -> CSResponse<AnyObject> & CSListData'
完全不可理解的是为什么返回类型是
<AnyObject> & CSListData
当它真的
CSResponse<CSListData>
. 谢谢。