別のクラスの同じ .h/.m ファイル内でカテゴリを定義することは良い方法ですか? エラーなしでビルドされ、個別に定義された場合とまったく同じになることがわかっています。
これを行う主な理由は、オープン ソース コントロールに取り組んでいて、.h/.m ファイルを 1 つにしたいからです。
別のクラスの同じ .h/.m ファイル内でカテゴリを定義することは良い方法ですか? エラーなしでビルドされ、個別に定義された場合とまったく同じになることがわかっています。
これを行う主な理由は、オープン ソース コントロールに取り組んでいて、.h/.m ファイルを 1 つにしたいからです。
一般に、複数のクラスとカテゴリを同じヘッダー/実装に結合する際の最大の問題は、検索性が損なわれることです。クラスが別のクラスを持つファイルにある場合、ファイル名はヘッダー/実装に他のクラスが含まれているという事実を反映しなくなり、他の人があなたのクラスを探すのがはるかに難しくなります。
ただし、プロジェクトが小規模で自己完結型の場合、検索可能性はそれほど問題になりません。検索するファイルが 1 つしかない場合、特定のコードの各部分がどこにあるかは問題ではありません。すべてがその 1 つのファイルにあります。あなたのプロジェクトは小規模で自己完結型のようです。そのため、すべてのコードを 1 つのソース ファイルに配置しても問題はないと思います。
別の方法として、各クラスとカテゴリを個別のヘッダー/実装のペアのファイルに配置し、それらすべてを含むヘッダーを定義することもできます。これにより、理想的なプロジェクト編成を維持し、ユーザーが単一のヘッダーを含めてコンポーネントを使用できるようになります。
このカテゴリが 1 か所だけ必要な場合は、ファイル内にカテゴリを配置することはそれほど悪くないと思い.m
ます。
明らかに、複数の場所でそのカテゴリが必要な場合は、必ず独自のファイルに移動する必要があります: 規則では、次のように名前を付けます:
BaseClass+categoryName.{h,m}
例えば:
NSString+reverseString.h
NSString+reverseString.m