NSScrollViewをカテゴリにフリップさせないように拡張しました(デフォルトでは反転されています)。次に、NSScrollViewをInterface Builderでアプリケーションに追加しました。 NSScrollViewが反転されます。ペン先にペンの種類が表示されるのはなぜですか?
どうすればいいですか?プロジェクトのソースファイルにカテゴリを含めません。私はそれだけでコンパイルして、何とか十分であるように思えます。そして、私は安全のために清潔なビルドをしました。
そして最も重要なことは:この動作を変更するにはどうすればよいですか?私は自分のニブが見つけられるすべてのカテゴリを自動的に拾い上げることを望んでいません。一方、時にはそれらを含むことが便利かもしれません。しかし、私はいつもカテゴリをopt-inとして見てきました。オプトインではないようです。
質問から何かを強調するだけです。「プロジェクトのソースファイルに自分のカテゴリを含めません。私は何らかの形でそれをコンパイルするだけで十分です。 "それはまさに正しいことです。あなたのプログラム内にカテゴリが存在し、それがターゲットによって構築されるという唯一の要件であれば、プログラム全体のクラスに影響を与えます。 –
このポイントをさらに拡大するには:既存のメソッドをカテゴリで上書きしないでください。一部のAppleフレームワークメソッドは、それ自体がカテゴリに実装されています。 2つのカテゴリが同じメソッドを実装する場合、その動作は未定義です。オーバーライドは、サブクラスではなく、カテゴリで行う必要があります。カテゴリは新しいメソッドを追加するためのもので、既存のメソッドを上書きしません。 –
ピーターのポイント:カテゴリは、カテゴリがロードされた時点からクラスのすべてのインスタンスに適用されます(既存のインスタンスに効果的に遡及的に適用されます)。これは、動的ライブラリにカテゴリを実装し、手動でロードする場合に重要です。ライブラリをロードすると、クラスが変更されます。重要な点は、原則として、カテゴリはアプリケーションの起動時だけでなく、任意の時点でクラスを変更できるため、カテゴリオーバーライドをさらに非決定的にすることができる点です。 –