静的ライブラリでカテゴリを使用する場合、認識されないセレクター。
私はグーグルで検索し、これを見つけましたか? http://www.dribin.org/dave/blog/archives/2006/03/13/static_objc_lib/
しかし、私はまだ混乱しています:
1、 と がobject.h/.m
ありobject+category.h/.m
、があり#import "object+category.h"
、object.m
これらをソース コードとしてプロジェクトに追加すると、正常に動作します (認識されないセレクタ エラーは発生しません)。しかし、これらを静的ライブラリに準拠させてプロジェクトに追加すると、認識されないセレクターでクラッシュします。
では、これら 2 つの方法の違いは何でしょうか。なぜ最初の方法ではセレクターを見つけることができ、2番目の方法では見つけることができないのですか?
2、この記事には、「最適化として、リンカーはシンボルの解決に必要なオブジェクト ファイルのみを選択する」と書かれています。スタティック ライブラリとソース コードも同じですか? プロジェクトのソース コードとして andがobject.h/.m
あり、決して使用されない場合を意味します。これらのコンパイル済みファイルはすべて、最終的な .app にリンクされますか?object+category.h/.m
object+category.h/.m
.o
object+category.o
3、各メソッドではなくクラスごとにシンボルが作成されている場合、xcode リンカはどのようにして必要であることを認識し、それを .app にリンクしますか? そしてobject+category.o
、コンパイル時または実行時にリンクが発生するのはいつですか?