iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 24
0
Mobile Development

30 天從 Swift 學會 Objective-C系列 第 24

[24] 30 天從 Swift 學會 Objective-C:Swift friendly 的 泛型

  • 分享至 

  • xImage
  •  

泛型是支撐 Swift 能夠實現 Protocol-oriented Programming 的基礎,Objective-C 在如此的功能是可以支援的。

Photo by @glenncarstenspeters on Unsplash

在 Day 15 的時候,我們討論過如何使用 Objective-C type。

//Objective-C
@interface OCBox1 <__contravariant ObjectType> : NSObject
- (_Nullable ObjectType) some;

@end
@interface OCBox2 <__covariant ObjectType> : NSObject
- (_Nullable ObjectType) some;

@end

我沒有理解 covariant 與 contravariant 在 Swift interface 有什麼區別。

Objective-C 不能限制 generic 型別

在 Swift 我們可以使用 where 限制泛型的約束

// Swift
class Box<T> where T: Comparable {

}

然而 Objective-C 目前是沒有提供這樣的語法。我們能做的,只有透過 extension 實作。

// swift
/* OCBox+Compareable */
extension OCBox:Comparable where ObjectType: Comparable {

}

簡單測驗

  1. extension 可以用 adapter 改寫嗎?

上一篇
[23] 30 天從 Swift 學會 Objective-C:Swift friendly 的 Enum, close Enum
下一篇
[25] 30 天從 Swift 學會 Objective-C:Swift friendly 的 Optional
系列文
30 天從 Swift 學會 Objective-C30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言