未設定のfloatを指定した場合、値が0のfloatとは異なることを行う必要があるメソッドがあります。基本的に、変数が設定されているかどうかを確認し、値が0の場合は設定済みとしてカウントする必要があります。 。
では、未設定の値(nil、NULL、NOなど)としてどのプレースホルダーを使用する必要がありますか?また、値0に対してtrueを返さずに変数が未設定であるかどうかをテストするにはどうすればよいですか?
未設定のfloatを指定した場合、値が0のfloatとは異なることを行う必要があるメソッドがあります。基本的に、変数が設定されているかどうかを確認し、値が0の場合は設定済みとしてカウントする必要があります。 。
では、未設定の値(nil、NULL、NOなど)としてどのプレースホルダーを使用する必要がありますか?また、値0に対してtrueを返さずに変数が未設定であるかどうかをテストするにはどうすればよいですか?
定数値を使用して未設定の状態を示すと、変数がその定数の値を合法的に取得するときにエラーが発生することがよくあります。
NSNumber
フロートの保管に使用することを検討してください。そうすればnil
、それはであるだけでなく、デフォルトでその状態になります。
これは、必要なフロートの数が少ないことを前提としています。何百万ものそれらが必要な場合は、NSNumber
遅すぎてメモリを大量に消費する可能性があります。
float
これらのプロパティをオーバーロードする(XおよびYと呼びましょう)代わりに、isValid
プロパティごとに個別のフラグを作成します。フラグを初期化して、フロートが設定されていないことを示し、フラグを適切に管理するための独自のセッターを提供します。したがって、コードは次のようになります。
if (self.isXValid == YES) {
self.Y = ... // assigning to Y sets isYValid to YES
}
else if (self.isYValid == YES) {
self.X = ... // assigning to Y sets isXValid to YES
}
実際にはさらに一歩進んで、XのセッターにYを割り当てさせることも、その逆も可能です。または、XとYが非常に密接にリンクされているため、一方を他方の値に基づいて計算できる場合は、実際には両方のプロパティに1つの変数のみが必要です。