говорят, у меня есть некоторые Objective-C, как это:можно ли отключить автоматическое продвижение типа в Objective-C
- (void) foo:(double)doubleVal;
есть способ, чтобы сделать следующий код не будет компилироваться:
int integerVal;
[self foo:integerVal];
, имея этот код успеха:
double doubleVal;
[self foo:doubleVal];
?
В идеале я мог бы сделать это только для foo, по сравнению с глобальным.
заранее спасибо, Orion
Любопытно, почему вы хотите, чтобы он потерпел неудачу? 'double' может обрабатывать любое значение' int'. – rmaddy
хороший Q. это потому, что я сделал рефакторинг, который не только изменяет тип этого параметра, но и ожидаемый диапазон. В частности, как int, диапазон составлял 0 - 255, а в виде double - 0.0 - 1.0. У меня есть куча кода, который нужно преобразовать в соответствие, и было бы замечательно, если бы компилятор использовал все прецеденты для меня. –
С таким рефакторингом я бы сохранил старый метод, а затем создал новый с немного другим именем. Новый берет 'double', а старый берет' int'. Это предотвращает нарушение существующего кода. Теперь вы можете изменить код, чтобы использовать новый метод (и новый диапазон) по мере необходимости. Вы даже можете оставить весь старый код и изменить старый метод, чтобы просто вызвать новый метод после преобразования 'int' в новый' double'. – rmaddy