2014-05-14 127 views
0

我在問,因爲我得到一個「!」注意警告與%i和%li有什麼區別?

問我%li與更換%I:

else if ([sender tag] == 8) 
    { 
     SKProduct *product = [_products objectAtIndex:6]; 

     NSLog(@"Buying %@...", product.productIdentifier); 
     [[RageIAPHelper sharedInstance] buyProduct:product]; 
    } 

這裏

NSLog(@"TAG IS: %i", (long)[sender tag]); 

} 

如果我改變它仍然是確定?

+1

閱讀格式說明符的文檔。 '%i'用於'int'。 '%l'是'long'的意思。 – rmaddy

+0

是的,我已經閱讀過它們,但如果我改變它們,它會在購買時有所作爲嗎?真的有什麼區別,爲什麼我必須改變它 - 正如Xcode所建議的?我真的必須改變它嗎? – Peter

+0

由於您已將'[發件人標記]'轉換爲'long',因此您必須使用'%l'。他們需要匹配。 – rmaddy

回答

1

%i打印int,但%li打印long。由於您正在打印long,因此應該對其進行更改。

+0

它會扭曲我的應用內購買的用戶嗎? – Peter

+0

不是。你告訴NSLog你給它一個'int',但你實際上給它一個'long'。將'%i'改爲'%li'告訴它你給它一個'long',你就是這樣,所以你應該改變它。 – NobodyNada

+0

「長」是「int」的兩倍。這意味着它可以擁有更大的價值,但也佔用更多的內存。 – NobodyNada

相關問題