gpt4 book ai didi

ios - 从另一个类检索NSInteger属性的正确方法?

转载 作者:行者123 更新时间:2023-12-01 18:11:40 25 4
gpt4 key购买 nike

我正在使用SpriteKit制作(某种)交易纸牌游戏。我创建了一个Card类,每个卡都有一个等级:

// in Card.h    
@property NSInteger cardRank;

在另一个 class (游戏 class )中,我正在尝试检索此值。我创建一个Card实例,并在控制台中显示值(测试目的):
Card *tmpCard = [[Card alloc] init];
NSLog(@"%@", tmpCard.cardRank);

当我在NSLog中使用%@时,我获得了cardRank的正确值,但是出现了Xcode警告,提示“不应将nsinteger类型的值用作格式参数”,并且应该将其强制转换为“long”。

如果我抛弃了……
NSLog(@"%ld", (long)tmpCard.cardRank);

…我没有错误,但是cardRank的值不正确(它显示类似“140378469207968”的内容)。

有人可以解释一下我为什么得到这个结果吗?
我可能是在犯一个菜鸟错误,但几天后我自己还是不明白。

最佳答案

获得有关C语言的好书,并查看格式字符串。 Objective-C中的格式字符串完全相同,除了%@需要一个对象。

打印NSInteger和NSUInteger的正确方法是%zd(在32位和64位上正常工作)。无论如何,如果您在Xcode中打开警告(如您应有的),并且在Xcode中将警告变成错误(如您应有的),则编译器会告诉您哪里出了问题,甚至提出了解决方法。

顺便说一句。如果您使用%@打印NSInteger,我预计会崩溃。您的帖子似乎没有包含真相。如有疑问,请非常,非常准确,正确地报告您的工作。 “它显示类似“140378469207968”的内容”是没有用的。准确显示其显示内容。

关于ios - 从另一个类检索NSInteger属性的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29767789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com