2011-10-26 80 views

回答

5

更確切地說,-[NSString length]返回一個無符號整數,所以從零中減去兩個(請記住,調用nil上的任何方法都爲零)不會給你-2,它會給你一個非常非常大的數字。將它投射到int(或NSInteger)以獲得您想要的結果。

0

你正在問for循環運行如果i<-2;作爲[NSString length]返回無符號整數,該值將換輪最大INT - 2

你傳遞一個消息給nil對象有太多:[aString length]。我不確定這是否是已定義的行爲,並且可能會返回一個奇怪的值範圍,儘管我懷疑它可能足夠聰明以返回0.我的評論者說,這種懷疑是真實的。

+0

如果'([aString length] - 2)'是-2(它不是)那麼'0 <-2'是假的,循環將不會運行。根據海報,它確實運行。 – 2011-10-26 16:07:36

+2

在Objective-C中消息傳遞'nil'安全地返回零(並且總是有),除非返回類型是一個結構體,在這種情況下你可能會遇到問題。即使這在更現代的編譯器中也是如此。 –

+0

事情是這樣int x = [aString length] -2; for(int i = 0; i Olof

相關問題