iOS 开发中的泛型

作者: 童话镇里蜿蜒的河 | 来源:发表于2019-07-09 16:54 被阅读5次

在iOS开发中,泛型的使用,可以减少沟通的成本,明确类型。
相信大家在开发中,或多或少,都接触或使用过泛型。比如在定义一些装有特定类型的数组时,会这样写

NSMutableArray <CarModel *> *dataSource

这样就表明了,dataSource这个数组中,放的是CarModel。使用objectForKey 可以直接用点语法,点出模型内部的属性进行使用。

[self.dataSource objectAtIndex:0].property;

在给数组添加数据时,也会有提示指明数组中的类型。

[self.dataSource addObject:(nonnull CarModel *)];

如果添加了错误的类型,会有警告。

[self.dataSource addObject:@""];
Incompatible pointer types sending 'NSString *' to parameter of type 'CarModel * _Nonnull'

自定义泛型类

在声明类的时候,不确定某些属性或者方法类型,在使用这个类的时候才确定,就可以采用泛型。
在声明类的时候,在类的后面<泛型名称>

 @interface Person<__covariant ObjectType> : NSObject

 @property (nonatomic, strong) ObjectType language;

Language : NSObject
#import <Foundation/Foundation.h>

@interface Language : NSObject

@end

.Java : Language
#import "Language.h"

@interface Java : Language

@end

.iOS : Language
#import "Language.h"

@interface iOS : Language

@end
- (void)test
{
    Java *java = [[Javaalloc]init];

    iOS *ios = [[iOSalloc]init];

  
    // iOS  指定这个人会的是iOS

    Person<iOS *> *p = [[Personalloc]init];

    p.language = ios;

 
    // Java   指定这个人会的是Java

    Person<Java *> *p1 = [[Personalloc]init];

    p1.language = java;

}

__covariant:协变, 子类转父类
__contravariant:逆变 父类转子类

规范是死的,人是活的。 不能说我们定义了规范,就必须使用泛型。
如果需求是:数组内,分别有不同类型的对象,你还在纠结怎么用泛型。。。
总之,要具备这样的思想,而不是很刻板的去遵守。

相关文章

  • iOS 开发中的泛型

    在iOS开发中,泛型的使用,可以减少沟通的成本,明确类型。相信大家在开发中,或多或少,都接触或使用过泛型。比如在定...

  • 如何理解IOS中泛型

    在平时开发过程中,几乎所有人都接触过泛型这个概念,苹果从IOS9以后引入了泛型这个概念,从系统库到我们自定义泛型中...

  • iOS 强大的泛型

    iOS 强大的泛型 iOS 强大的泛型

  • Scala泛型

    泛型的意思是 泛指某种具体的数据类型 , 在Scala中, 泛型用 [数据类型] 表示. 在实际开发中, 泛...

  • swift4 泛型(一)

    swift 泛型 OC 是没有泛型也不支持命命空间的,但是swift中这两者都有,本章主要介绍 泛型 对于iOS开...

  • Swift中泛型的使用

    在使用Swift开发的过程中,我们可能经常会碰到泛型。那么究竟什么是泛型?泛型作为Swift最为强大的特性之一,该...

  • Java 泛型

    导读 移动开发知识体系总章(Java基础、Android、Flutter) 为什么会有泛型? 泛型类 泛型方法 泛...

  • iOS9新特性之泛型

    泛型:限制类型 开发中使用场景:限制集合中的类型。注意:泛型只能检测方法的调用,换句话说泛型只能用来修饰方法,因为...

  • iOS9新特性之泛型/协变/逆变

    为什么苹果要推出泛型 1.迎合swift2.泛型作用:限制类型 泛型好处: 1.提示开发者集合中是什么类型,提高代...

  • Java 泛型

    泛型类 例如 泛型接口 例如 泛型通配符 泛型方法 类中的泛型方法 泛型方法与可变参数 静态方法与泛型 泛型上下边...

网友评论

    本文标题:iOS 开发中的泛型

    本文链接:https://www.haomeiwen.com/subject/vrqahctx.html