Я уже некоторое время работаю над проектом iOS и недавно решил для переноса кода в проект Mac. Поскольку я решил использовать NSInteger в своем коде, а NSInteger является преобразованием типов, зависящим от среды, это означает, что мои переменные Способности бывают разных типов в приложениях для iOS и Mac.
Когда я запускаю набор тестов на Mac, все мои вызовы STAssertEquals завершаются с ошибкой «Несоответствие типов -», потому что типы не совпадают:
NSInteger foo = 1;
STAssertEquals(foo, 1, nil); // Test fails!!
Типизация моих скаляров, похоже, работает, но это кажется действительно беспорядочным :
NSInteger foo = 1;
STAssertEquals(foo, (NSInteger)1, nil); // Succeeds, but is ugly!!
Я что-то здесь упускаю? Я начинаю подозревать, что решение использовать NSIntegers было неудачным выбором.
Обновление: Возможно эта статья имеет отношение. Кажется, он поддерживает скаляры с приведением типов.