他の SDK (Facebook SDK 3.5 など) を統合する iOS SDK を開発しています。競合を防ぎ、顧客がこれらの SDK をインポートできるようにするために、コード内のすべてのクラス/列挙型の名前を変更したいと考えています (たとえば、FBSession を RDFBSession に名前変更するなど)。
クラスごとに移動してXcodeの名前変更機能を使用する代わりに、これを行う簡単な方法はありますか?
他の SDK (Facebook SDK 3.5 など) を統合する iOS SDK を開発しています。競合を防ぎ、顧客がこれらの SDK をインポートできるようにするために、コード内のすべてのクラス/列挙型の名前を変更したいと考えています (たとえば、FBSession を RDFBSession に名前変更するなど)。
クラスごとに移動してXcodeの名前変更機能を使用する代わりに、これを行う簡単な方法はありますか?
Apple は、tops(1)
大規模なコード リファクタリング (C 関数、Objective-C メソッド、クラス、およびその他のトークンの名前を変更する) をスクリプト化するために設計された、と呼ばれるコマンド ライン ツールを提供しています。
tops -verbose replace "FBSession" with "RDFBSession" Sources/*.[hm]
置換が多数ある場合は、すべてのreplace...
コマンドを-scriptfile
オプションで渡すファイルに入れることができます。man ページには、より複雑なコマンド/オプション (および例) に関する詳細情報があります。
クラスの名前を単純に変更するよりも良い方法は、Facebook のオープン ソース コードをダウンロードし、そこでクラスの名前を変更し、名前を変更した一連のヘッダー ファイルを使用して新しい静的ライブラリをコンパイルすることだと思います。そうすれば、衝突が発生せず、自分で名前を付けたシンボルを使用していることを確認できます。
ただし、警告する必要があります。このような作業を行うと、この特定の問題にどのように取り組むかに関係なく、SDK の更新が悪夢になる可能性があります。