2014-05-14 67 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

相关问题