見出し画像

Swiftフレームワーク:「ObjectiveKit」

先日アップした私家版和訳の末尾で言及されていた「ObjectiveKit」。そのGitHubページにあるREADMEの私家版和訳です。

GitHubに登録されてるのは…Swift 3で開発されてます。Deploy先は、iPhone/iPad/macOSとなってます。…ってコード、結構、Xcode11から、物言い(エラー)が点いてますよ? 最新化には、かなり手を入れる必要がありますね。

2020-06-25追記:Forkした上でSwift5化した、私家版「ObjectiveKit」をGitHub上に置きました(Pull-Requestは既に提出済み)。

以下、本文です。

1. ObjectiveKit

ObjectiveKitは、一連の「強力なObjective-Cランタイム関数」セットのための、SwiftフレンドリーなAPIを提供します。

1.1. 使用法

ObjectiveKitを使用するには:

Swiftファイルの先頭で、ObjectiveKitをインポートします:

import ObjectiveKit

次に、修正またはイントロスペクトしたいクラス用に、型付けされたObjectiveClassオブジェクトを作成します:

let viewClass = ObjectiveClass<UIView>()

カスタムSwiftクラスでObjectiveKitを使用する場合は、どこかの時点でNSObjectを継承し、@objcフラグを使用してObjective-Cランタイムに公開していることを確認してください。

1.1.1. イントロスペクション

これらの便利なイントロスペクション・メソッドを使えば、実行時にクラスについてより詳しく知ることができます:

let mapViewClass = ObjectiveClass<MKMapView>()

let ivars = mapViewClass.ivars // ivarの配列
let selectors = mapViewClass.selectors // selectorの配列
let properties = mapViewClass.properties // propertyの配列
let protocols = mapViewClass.protocols // protocolの配列

1.1.2. 実行時にクラス修正

既存のセレクタを、別のクラスからObjectiveClassに、追加します:

let viewClass = ObjectiveClass<UIView>()
viewClass.addSelector(#selector(testSelector), 
					  from: self.classForCoder)
let view = UIView()
view.perform(#selector(testSelector))

クロージャ付き実装を提供することで、カスタムメソッドを追加します:

let viewClass = ObjectiveClass<UIView>()
viewClass.addMethod(closureName, 
					implementation: {
						print("hello world")
					})
let view = UIView()
view.performMethod(closureName)

ObjectiveKitは、同じクラス内でのセレクタ交換もサポートしています:

let viewClass = ObjectiveClass<UIView>()
viewClass.exchangeSelector(#selector(UIView.layoutSubviews), 
						   with: #selector(UIView.xxx_layoutSubviews))

1.1.3. 実行時にクラス生成

最後に、実行時にカスタムObjCクラスを作成することもできます:

let runtimeClass = RuntimeClass(superclass: UIView.self)
runtimeClass.addIvar(ivarName, type: .Float)

let runtimeObject = runtimeClass.allocate()
runtimeObject.setValue(4.0, forKey: ivarName)

1.2. セットアップ

1.2.1. CocoaPodsでセットアップ

source 'https://github.com/CocoaPods/Specs.git'
pod 'ObjectiveKit', '~> 0.2'

1.2.2. Carthageでセットアップ

Carthageは、Cocoaアプリケーションにフレームワークを追加するプロセスを自動化する、分散型の依存関係管理ツールです。

下記コマンドで、Homebrewを通して、Carthageをインストールできます:

$ brew update
$ brew install carthage

Carthageを使ってObjectiveKitをXcodeプロジェクトに統合するには、Cartfileで指定します:

github "marmelroy/ObjectiveKit"

1.2.3. インスピレーション

いいなと思ったら応援しよう!