2016-04-14 24 views

cevap

2

NSArray countNSUInteger bir türü vardır. Bu işaretsiz bir tam sayı. Eğer array.count - 1 yapmak ve array.count0 olduğunda

Yani, sonuç gerçekten büyük sayı (- 1 veya 2^64-1 ya 2^32) var, -1 değildir. Bu, imzasız değerler ile çalışmanın bir sonucudur.

İmzasız bir matematikten kaçınarak döngüsünüzün beklendiği gibi çalışmasını sağlayabilirsiniz. Kullanım: -

for (NSInteger i = 0; i < (NSInteger)array.count - 1; i++) 

BTW daha net bunu yaparsanız sorunu görebilirsiniz:

int cnt = array.count - 1; // Look at this value in the debugger, it's not -1 
for (int i = 0; i < cnt; i++) { 
} 
+0

Veya daha iyisi, hızlı numaralandırma kullanın. ;) – nhgrif

+0

@nhgrif Nasıl? İç döngü dış döngünün indeksine bağlıdır. – rmaddy

+0

Dış döngü, 'enumerateObjectsUsingBlock' öğesini kolayca kullanabilir. İç döngü * doğru dizinde 'stop' parametresini ayarlayarak aynı şeyi yapabilir. – nhgrif

İlgili konular