Estoy haciendo un tutorial de carrito de la compra: Tengo una matriz que recopila entradas de un campo de texto y luego las muestra en NSTableView. Puede verificar un elemento y eliminarlo de la lista. Quiero mostrar una advertencia solo si hay algo marcado. Por lo tanto, tengo esto:Advertencia "La conversión implícita pierde precisión de enteros ..."
-(IBAction)removeItemFromShoppingList:(id)sender {
int selectedItemIndex = [shoppingListTableView selectedRow];
if (selectedItemIndex == -1) return;
NSAlert *alert = [[NSAlert alloc] init];
...
[alert runModal];
[alert release];
}
En la línea 2 aquí (int selectedItemIndex...
) recibo una advertencia de color amarillo: conversión implícita pierde precisión entero:’NSInteger’ (también conocido como ‘largo’) a ‘int’.
¿Por qué?
Tal vez porque un int es más corto que un tiempo? –
Como comentario adicional, solo debería ver esta advertencia al construir para el simulador, ya que NSInteger tiene 32 bits cuando se construye para el dispositivo. Como han dicho otros, debe usar los mismos tipos de precisión o emitir explícitamente para decir "Sé con certeza que nunca será mayor que 32 bytes". –
¿Qué quiere decir "solo construir para el simulador"? (Es para una aplicación Mac, no para iOS) – janeh