色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>通訊/手機(jī)編程>

iOS中關(guān)于泛型的解析

大小:0.3 MB 人氣: 2017-09-25 需要積分:2

文章圍繞這五點(diǎn):

1. 泛型是什么

2. 為什么要用泛型

3. 泛型怎么用

4. 泛型進(jìn)階

5. 泛型的延伸使用

泛型(Generics)是什么?

引用Apple中Generics的描述:

Generic code enables you to write flexible, reusable functions and types that can work with any type, subject to requirements that you define. You can write code that avoids duplication and expresses its intent in a clear, abstracted manner.

Generics are one of the most powerful features of Swift, and much of the Swift standard library is built with generic code. In fact, you’ve been using generics throughout the Language Guide, even if you didn’t realize it. For example, Swift’s Array and Dictionary types are both generic collections. You can create an array that holds Int values, or an array that holds String values, or indeed an array for any other type that can be created in Swift. Similarly, you can create a dictionary to store values of any specified type, and there are no limitations on what that type can be.

大意是講:

泛型可以讓你使用定義的類型來編寫靈活的、可重用的函數(shù)和類型,可以避免重復(fù),以清晰,抽象的方式表達(dá)其意圖。用人話來說(????),泛型給予我們更抽象的封裝函數(shù)或類的能力,不嚴(yán)謹(jǐn)?shù)膩碇v,一門語言越抽象使用越方便。Swift中的Array和Dictionary都是基于泛型編寫的集合類型,如果不太理解也沒關(guān)系,下面講幾個(gè)例子理解下。

1. Objective-C中的泛型

在2015年WWDC上蘋果推出了Swift 2.0版本,為了讓開發(fā)者從Objective-C更好得過渡到Swift上,蘋果也為Objective-C帶來了Generics泛型支持

Generics. Allow you to specify type information for collection classes like NSArray, NSSet, and NSDictionary. The type information improves Swift access when you bridge from Objective-C and simplifies the code you have to write.

所以我們經(jīng)常看到的OC中的泛型比如:

1

2

3

4  // 實(shí)例化一個(gè)元素類型為`NSString`的數(shù)組

NSArray 《nsstring *》 *array = [NSArray new ];

// 或者字典

NSDictionary 《nsstring *, nsnumber *》 *dict = @{@ “manoboo” : @1}《/nsstring *, nsnumber *》《/nsstring *》

或者:

1

2  - (void)touchesBegan:(NSSet《uitouch *》 *)touches withEvent:(UIEvent *)event {

}《/uitouch *》

我們先看看OC中的泛型大概做了些什么:

打開NSArray.h 我們可以看到:

1

2

3

4

5

6

7  @interface NSArray《__covariant ObjectType》 : NSObject 《nscopying, nsmutablecopying, nssecurecoding, nsfastenumeration》

@property (readonly) NSUInteger count;

- (ObjectType)objectAtIndex:(NSUInteger)index;

- (instancetype)init NS_DESIGNATED_INITIALIZER;

- (instancetype)initWithObjects:(const ObjectType _Nonnull [_Nullable])objects count:(NSUInteger)cnt NS_DESIGNATED_INITIALIZER;

- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder NS_DESIGNATED_INITIALIZER;

@end《/nscopying, nsmutablecopying, nssecurecoding, nsfastenumeration》

聲明一個(gè)Generics的格式如下:

1

2  @interface 類名 《占位類型名稱》

@end

占位類型后也可以加入類型限制,比如:

1

2  @interface MBCollection 《t: nsstring *》

@end《/t: nsstring *》

非常好我支持^.^

(0) 0%

不好我反對

(1) 100%

      發(fā)表評論

      用戶評論
      評價(jià):好評中評差評

      發(fā)表評論,獲取積分! 請遵守相關(guān)規(guī)定!

      ?
      主站蜘蛛池模板: 高清无码中文字幕影片| 色久久一个亚洲综合网| 九九视频在线观看视频6| 久久久久国产精品美女毛片| 麻豆精品无码久久久久久久久| 九九99热久久精品在线6| 美女张开腿让男生桶动态图 | 欧美 日韩 亚洲 在线| 日本护士性生活| 在教室伦流澡到高潮HNP视频 | 少妇伦子伦情品无吗| 亚洲视频在线看| xxxxx俄罗斯| 九九热在线观看| 全文都是肉高h文| 污到湿的爽文免费阅读| 永久免费精品影视网站| 国产AV精品久久久毛片| 免费亚洲视频| 亚洲视频网站欧美视频网站| 纯h超级大尺度小黄文| 两性色午夜视频免费国产| 亚洲欧美日韩高清专区| GOGOGO高清在线播放免费| 极品少妇小泬50PTHEPON| 少妇两个奶头喷出奶水了怎么办 | 美女屁股软件| 亚洲成人mv| 国产 亚洲 中文在线 字幕| 欧美xxxxxbb| 999av视频| 欧美97色伦影院在线观看| 97在线视频免费观看97| 暖暖 免费 高清 日本在线| 最近中文字幕MV高清在线 | 午夜A级理论片左线播放| SM高H黄暴NP辣H调教性奴| 欧美极限扩肛| 大胸美女被c| 偷拍自偷拍亚洲精品| 国产成人亚洲综合无|