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
答案 0 :(得分:2)
从Xcode 7开始,Objective-C支持generics:
Objective-C已经更新,使它和Swift能够更加轻松高效地协同工作。新的Objective-C语言功能包括:
- 泛型。允许您指定集合类的类型信息,例如NSArray,NSSet和NSDictionary。当您从Objective-C桥接时,类型信息可以改进Swift访问,并简化您必须编写的代码。
CTSelectChildAccountViewController
是ViewController
。意味着ViewControllerClass
的剂量定义为UIViewController
?
实例化中的星号也是相关的,因此ViewControllerClass viewController
被解释为CTSelectChildAccountViewController* viewController
。
除Swift外有什么好处?
Objective C编译器现在有更多类型信息,因此它可以对您调用的方法执行更好的检查。例如,您可以使用进入它们的类型来注释Cocoa集合,例如NSArray<NSString*> *array
,让编译器发现意外插入错误类型的位置。
对Swift有什么用?
Swift内置了对泛型的支持。在Objective-C API中添加轻量级泛型可以更轻松地与Swift进行交互,因为您的API可以更精确地进行转换。例如,从Swift翻译您的示例将保持其通用性,而不是用其基类型替换泛型类型参数ViewControllerClass
。