IOS / Objective-C / Xcode: неявное преобразование теряет ошибку целочисленной точности с int - PullRequest
0 голосов
/ 04 сентября 2018

При использовании int для подсчета элементов массива, например ::100100

 int size = [latestComments count];

, что я делал в своем приложении, я получаю предупреждение компилятора:

Неявное преобразование теряет целочисленную точность: «NSUInteger» (он же «unsigned long») в «int»

Я никогда не беспокоился об этом слишком сильно, потому что полагал, что при работе с целыми числами точность была достаточно близкой, но я хочу избавиться от предупреждений. Чтобы заставить замолчать предупреждения, безопасно ли изменить все это на:

long size = [latestComments count];

Это, кажется, заставляет замолчать предупреждения на специальной основе, но я хотел бы быть уверенным, что нет никаких больших последствий, о которых я не знаю. (Я заметил, что изменение его на NSInteger или NSUInteger при отключении предупреждения может вызвать проблемы в нисходящем направлении, когда они используются в сравнениях и т. Д.)

1 Ответ

0 голосов
/ 04 сентября 2018

long не решит ваших проблем. Свойство count возвращает целое число без знака NSUInteger. Чтобы избавиться от ошибки, вам нужно объявить NSUInteger size = ...

Это может выдвинуть предупреждение туда, где вы будете использовать size, поскольку, если типы снова не совпадают.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...