При переходе на Mac с iOS при разработке Objective-C NSIntegers выдают ошибки сопоставления типов

Я уже некоторое время работаю над проектом 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 было неудачным выбором.

Обновление: Возможно эта статья имеет отношение. Кажется, он поддерживает скаляры с приведением типов.

6
задан Community 23 May 2017 в 11:47
поделиться