在C#中我可以这样做:Objective-C中的“泛型”做一个RangeValidator?
class RangeValidator<T> {
public T MinValue { get; set; }
public T MaxValue { get; set; }
}
其中T可以是任何基本类型; int
,float
,double
...或任何“对象”类型; String
,DateTime
等
如果OBJ - C的,我做了这样的:
@interface RangeValidator {
id minValue;
id maxValue;
}
@property ...
它的工作对我们说的NSNumber或NSString的,但如果我分配了一个NSInteger的给我minValue(最小值)会得到像
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。在这种情况下,你是否分享Konstantins认为非类型化代码('id minValue; id maxValue;')是丑陋的?我认为这就是obj-c ppl喜欢它的原因:) – Cotten 2012-03-23 15:10:03
我喜欢尽可能保持精确的类型,但是在这里输入的文字很少,没有那么糟糕。当然,我更喜欢Objective-C++的'id'解决方案。 – zoul 2012-03-24 07:55:20
好的,谢谢你的输入! – Cotten 2012-03-26 06:30:27