莫空面试记 2#
面接中に質問されたこと、もしページを統計し、各ページに記録を作るとしたら、どうしますか?
それから考えて言いました、
- 以前の私のやり方は、各画面の viewDidAppear で記録のメソッドを書くことでした。
- 現在の私のやり方は、UIViewController から継承した基底クラスを宣言し、そのクラスに log のメソッドを書き、すべての画面がこのクラスを継承します。
それから、もし私の画面の中に UITableViewController から継承したものがあったらどうするかと聞かれ、私は再び UITableViewController の基底クラスを書くと言いました。では、UICollectionViewController や UITabBarViewController から継承したものがあったらどうするか?その時、私は恥ずかしくなりました。。。。。
確かに他にどんな方法があるのか分かりませんでしたが、ちょうど runtime を検索している時に、あるブログを見つけました、Method Swizzling と AOP 実践、涙が出そうになりました。。。まったく同じ、まったく同じ、どうして早く見なかったのか。
見た後、私はとても協力的だと感じました、前の二つを言い出しました。
答えは皆さんが上のリンクを見てください、Method Swizzling と AOP の二つは以前聞いたことがありましたが、今日は知識が増えました、無駄ではありませんでした、うん、皆さんにシェアします。
そういえば、デモもあります、作者のデモ、AspectsDemo、この実装は見た目が確かに良く、高級感もあります。皆さんはまずリンクを見て、その後このデモを見てください。