3

ポインタを使用せずにObjective Cで多分型を表す最良の方法は何ですか? オブジェクトへのポインターへのポインターはオブジェクトではなく、オブジェクトである必要があるため、オブジェクトへのポインターへのポインターを単純に使用することはできません。

これを行う 1 つの方法は、持っているオブジェクトごとにカスタム クラスを作成することです。これにより、MaybeEmployee、MaybeOrderStatus などのクラスが作成され、さらに多くのカスタム クラスが作成されます。これはうまくいくでしょうが、それはぎこちなく、あまり良い解決策とは言えません。

単純に Maybe クラスを持つ 2 番目の方法も間違っているようです。型安全性の欠如は、単に悪いことです。

4

3 に答える 3

1

lef2 は正しい考えを持っています。NSNull を使用して、「そうではない」ケースを表します。

それを処理する最も簡単な方法は、メソッドに型idのオブジェクトを返すようにすることですが、あなたが言うように、それは型の安全性を犠牲にします。

祖先クラス MaybeClass を作成し、すべてのクラスをそこから派生させることをお勧めします。次に、実際には NSNull である特定のサブクラス MaybeNot を作成できます。

標準オブジェクトのみを使用して、メソッド呼び出しの結果が空の場合に nil を返すこともできることに注意してください。Objective C は、他の多くの言語よりもはるかにきれいに nil オブジェクト ポインターを処理します。メッセージを nil オブジェクトに送信することは完全に有効です。彼らはただ落とされます。

于 2012-06-10T00:19:05.077 に答える
0

また、「多分タイプ」とはどういう意味かわかりません。プロトコルは、プロトコルを実装するクラスと実装しないクラスがある場合に、必要なものにすることができます。オブジェクトがそれを実装しているかどうかを確認できます[yourObjectconformsToProtocol:@protocol(yourProtocol)]。これがお役に立てば幸いですが、そうでない場合は、もう少し説明しておくとよいでしょう。

于 2012-06-10T00:51:20.120 に答える
0

「多分タイプ」があなたにとって何を意味するのか正確にはわかりませんが、十分ではない理由idはありますか?

于 2012-06-09T21:34:31.370 に答える