这是什么类型的类定义:ClassName <variable>:parent

时间:2016-06-27 14:08:04

标签: objective-c class delegates protocols

ViewControllerClass这意味着什么剂量?

据我所知,这不是协议,委托或扩展。任何人都可以解释它的剂量如何起作用?

.h文件:

@interface BaseViewControllerTest <ViewControllerClass> : XCTestCase

@property ViewControllerClass viewController;

- (void)setUpTestWithStroyboardName:(NSString *)viewControllerName;

.m文件:

@implementation BaseViewControllerTest


- (void)setUpTestWithStroyboardName:(NSString *)viewControllerName {}

像这样使用:

#import "BaseViewControllerTest.h"

@interface CTSelectChildAccountViewControllerTests : BaseViewControllerTest <CTSelectChildAccountViewController *>

@end

1 个答案:

答案 0 :(得分:2)

从Xcode 7开始,Objective-C支持generics

  

Objective-C已经更新,使它和Swift能够更加轻松高效地协同工作。新的Objective-C语言功能包括:

     
      
  • 泛型。允许您指定集合类的类型信息,例如NSArray,NSSet和NSDictionary。当您从Objective-C桥接时,类型信息可以改进Swift访问,并简化您必须编写的代码。
  •   
     

CTSelectChildAccountViewControllerViewController。意味着ViewControllerClass的剂量定义为UIViewController

实例化中的星号也是相关的,因此ViewControllerClass viewController被解释为CTSelectChildAccountViewController* viewController

  

除Swift外有什么好处?

Objective C编译器现在有更多类型信息,因此它可以对您调用的方法执行更好的检查。例如,您可以使用进入它们的类型来注释Cocoa集合,例如NSArray<NSString*> *array,让编译器发现意外插入错误类型的位置。

  

对Swift有什么用?

Swift内置了对泛型的支持。在Objective-C API中添加轻量级泛型可以更轻松地与Swift进行交互,因为您的API可以更精确地进行转换。例如,从Swift翻译您的示例将保持其通用性,而不是用其基类型替换泛型类型参数ViewControllerClass