私は Mac マーケットプレイスで販売しているアプリを持っていますが、このアプリは滞りなく実行されていました (顧客が Mavericks で実行し始めるまで)。
要するに、顧客から返された次のような例外です。
11/7/13 8:54:17.841 AM MyApp[65256]: -[Property watts Per Square MeterStringValue]: 認識されないセレクターがインスタンス 0x7fa66c80a760 に送信されました
ここで、"watts Per Square MeterStringValue" が有効なセレクターではないことは明らかですが、説明させてください。
文字列からスペースを削除したり、文字列の最初の文字を小文字に設定したりするなど、さまざまなことを行う一連のメソッドを持つ NSString のカテゴリがあります。このカテゴリは、アプリに埋め込むフレームワークに存在します。
そのカテゴリの 1 つの特定のメソッドは、文字列をバインド可能なキャメル ケース文字列に変換する「bindString」です。そう:
[@"これはファンキーな文字列です" bindString]
次の結果が得られます。
"thisIsAFunkyString"
私のアプリで Mavericks の下で発生しているように見えるのは、ソースで参照されているにもかかわらず、カテゴリ メソッドが常に呼び出されていないことです。この動作は完全にランダムです。アプリの実行中に、呼び出される場合と呼び出されない場合があります。そうでない場合、上記のような例外が発生します。
これは、Mavericks の下でのみ発生します。同じバイナリは、Mountain Lion と Lion の下で問題なく動作します。
今思うと、これはなぜなのか。Mavericks での Obj-C ランタイムの問題ですか? Xcode 5.0.1 コンパイラの問題ですか? わかりませんが、それはただ奇妙で、私を壁に押し上げています。
私はほぼすべてを試しました。次に試みるのは、カテゴリ .m と .h をフレームワークからヤンクして、アプリ プロジェクトに直接配置することです。
マーベリックスの下でこのようなものを見た人はいますか?