В C # я мог бы сделать это:
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.Мне было просто любопытно, есть ли другие способы решения этой проблемы?
Спасибо!