私はこれを行うことができます:Tは任意のプリミティブ型である可能性がありObjective-Cの "Generics"でRangeValidatorを実行しますか? C#ので
class RangeValidator<T> {
public T MinValue { get; set; }
public T MaxValue { get; set; }
}
。 int
,float
,double
...または任意の「オブジェクト」型。 String
、DateTime
など
のObj-Cで、私はこのようにそれをしなかった場合:
@interface RangeValidator {
id minValue;
id maxValue;
}
@property ...
それはのはのNSNumberやNSStringのを言わせてのために働くだろうが、私はのminValueにNSIntegerを割り当てた場合、私は思います
warning: initialization makes pointer from integer without a cast
// Since an id is a pointer to an object, not an integer. Correct?
代わりにNSNumberを使用することをお勧めします。このような問題に他の解決策があるのであれば、私はちょうど興味がありましたか?
ありがとうございます!
ありがとうzoul!私は+ Krumelurのアドバイスを取って、NSNumberのラッピングに行きました。この場合、型なしコード( 'id minValue; id maxValue;')が醜いとコンスタンチンズの意見を共有していますか?私はそれがobj-c pplがそれを好んだ方法だと思った:) – Cotten
私は可能な限り正確な型を保つのが好きだが、ここではあまりにも緩い型付けはそれほど悪くない。確かに私はObjective-C++の 'id'ソリューションを好むでしょう。 – zoul
あなたのご意見ありがとうございました! – Cotten