自作の Framework を別のプロジェクトにリンクしたところ、Duplicate Symbol になってしまいました。

こんな感じです。

duplicate symbol _OBJC_IVAR_$_HogeClass.delegate_ in: /Users/WhoAmI/SampleProject/Sample/Lib/Sample.framework/Sample(HogeClass-6E303E2BD7E6AB60.o)
duplicate symbol _OBJC_IVAR_$_HogeClass.path_ in: /Users/WhoAmI/SampleProject/Sample/Lib/Sample.framework/Sample(HogeClass-6E303E2BD7E6AB60.o)
duplicate symbol _OBJC_CLASS_$_HogeClass in: /Users/WhoAmI/SampleProject/Sample/Lib/Sample.framework/Sample(HogeClass-6E303E2BD7E6AB60.o)
duplicate symbol _OBJC_METACLASS_$_HogeClass in: /Users/WhoAmI/SampleProject/Sample/Lib/Sample.framework/Sample(HogeClass-6E303E2BD7E6AB60.o)

-all_load-force_load を使わない限りは Duplicate Symbol にならず、普通に使えました。Framework の中のオブジェクトを事前にロードしようとするとダメなようでした。

どうしたものかと自作 Framework のビルド設定をよく見たら、Compile Sources に同じファイルが 2 つ登録されていました。重複するファイルを削除したところ、Duplicate Symbol が解消されました。

別のブランチをマージしたときに project.pbxproj が盛大にコンフリクトしたので手作業で修正したのですが、そこで失敗したのかもしれないです。

普通にビルドするぶんには問題ないので、気づきにくい問題ですね。コンパイルエラーにならないし。せめて警告だけでも出してほしい気がします。