アスペクト - ピュアスウィフトは、AOPのライブラリを書きました

主な困難は、NSInvocationとNSMethodSignatureでセレクターとブロックスウィフトを取得することで、興味を持って見ることができます。

住所:github.com/woshiccm/As ...

アスペクトは、アスペクト指向プログラミングのためのための軽量、純粋-スウィフトライブラリです。このプロジェクトは、多額の人気に触発された側面それはあなたの次のアプリで純粋スウィフトの代替を使用する機会を提供します。

特徴

  • フックオブジェクトセレクタ
  • より親しみやすいスウィフトインタフェースを提供

使用法

OCブロックとフックオブジェクトセレクタ

public class Test: NSObject {
   @objc dynamic func test(id: Int, name: String) {
        print(id)
        print(name)
    }
}

let test = Test()

let wrappedBlock: @convention(block) (AspectInfo, Int, String) -> Void = { aspectInfo, id, name in

}
let block: AnyObject = unsafeBitCast(wrappedBlock, to: AnyObject.self)
test.hook(selector: #selector(Test.test(id:name:)), strategy: .before, block: )
复制代码

スイフトブロックとフックオブジェクトセレクタ

test.hook(selector: #selector(Test.test(id:name:)), strategy: .before) { (aspectInfo: AspectInfo, id: Int, name: String) in

}

复制代码

必要条件

  • iOS版8.0+
  • スウィフト4.0-5.x

次のステップ

  • サポートフッククラスセレクタ
  • 詳細を改善
  • サポートCocopodsインストール

インスト

カルタゴ

あなたに次の行を追加しますCartfile

git "https://github.com/woshiccm/Aspect.git" "master"
复制代码

協力者

サポーター

ライセンス

アスペクトは、MITライセンスの下でリリースされます。詳細については、ライセンスを参照してください。

おすすめ

転載: blog.csdn.net/weixin_34236869/article/details/91386680