您的位置:首页 > 移动开发 > IOS开发

第01天实战技术(03): iOS9新特性之泛型

2017-03-24 00:00 246 查看
#####一、泛型

1.什么是泛型

泛型  : 限制类型
为什么要推出泛型? 迎合swift


2.泛型的注意点

id是不能用点语法
// [self.arr addObject:<#(nonnull id)#>] // <#(nonnull id)#> 没有泛型限制  什么类型都可以存放


2.1泛型的好处

泛型仅仅报警告
泛型好处 : 1.从数组中取出来,可以使用点语法
2.给数组添加元素,有提示


3.泛型的声明

泛型的声明       : 在声明类的时候,在类的后面<泛型名称>
@property(nonatomic) NSMutableArray<NSString *> *arr; // 只想存放 字符串


4.自定义泛型

自定义泛型?
什么时候使用泛型? 在声明类的时候,不确定某些属性、或者方法类型,在使用这个类的时候才确定,就可以采用泛型
自定义Person , 会编程语言(iOS,Java),在声明Person,不确定这个人会什么,在使用Person才知道这个Person会什么语言
如果没有定义泛型 默认是id

@interface Person<ObjceType> : NSObject
// 语言
@property(nonatomic) ObjceType language;

@end


5.泛型的用法

泛型的用法       : 类型<限制类型>
NSMutableArray<NSString *> *arr;
Person<iOS *> *p = [[Person alloc]init];


6.泛型的使用场景以及声明、自定义

泛型在开发中使用场景 : 1.用于限制集合类型
为什么集合可以使用泛型?
使用泛型,必须要先声明泛型?  ==> 如何声明泛型
自定义泛型?
什么时候使用泛型? 在声明类的时候,不确定某些属性、或者方法类型,在使用这个类的时候才确定,就可以采用泛型
自定义Person , 会编程语言(iOS,Java),在声明Person,不确定这个人会什么,在使用Person才知道这个Person会什么语言
如果没有定义泛型 默认是id


code
一、自定义一个类,并且这个类可以使用泛型
Person

#import <Foundation/Foundation.h>
@class iOS;
@interface Person<ObjceType> : NSObject
// 语言
@property(nonatomic) ObjceType language; // 如果没有指定泛型,默认是id

@end

---

#import "Person.h"

@implementation Person

@end

二、使用

Java *java = [[Java alloc]init];
iOS *ios = [[iOS alloc]init];

// 只会ios
// 定义泛型 Person<iOS> *p
Person<iOS *> *p = [[Person alloc]init];
p.language = ios;

//
Person *p2 = [[Person alloc]init];
p2.language = ios;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Objective-C