【发布时间】:2016-01-05 05:00:19
【问题描述】:
我正在使用SpriteKit 制作(某种)集换式卡牌游戏。我创建了一个 Card 类,每张卡片都有一个等级:
// in Card.h
@property NSInteger cardRank;
在我的另一个类(游戏类)中,我正在尝试检索此值。我创建了一个 Card 实例,并在控制台中显示值(测试目的):
Card *tmpCard = [[Card alloc] init];
NSLog(@"%@", tmpCard.cardRank);
当我在 NSLog 中使用 %@ 时,我得到了 cardRank 的正确值,但是 Xcode 警告说“nsinteger 类型的值不应该用作格式参数”并且我应该转换为“long”。
如果我投长... :
NSLog(@"%ld", (long)tmpCard.cardRank);
…我没有收到任何错误,但 cardRank 的值不正确(它显示类似“140378469207968”的内容)。
有人能解释一下为什么我得到这个结果吗?
我可能犯了一个菜鸟的错误,但最近几天我自己无法理解。
【问题讨论】:
-
你给它分配了默认值吗?
-
"当我使用 %@..." 你确定你使用 %@ 时没有崩溃吗?
-
@ParthBhatt:Objective-C 对象中的所有内容都初始化为零。
-
%@ 没有因整数而崩溃?我觉得很难相信。请仔细检查。当我输入 %@ 时,我的意思是 %@ 而不是您在代码中使用的任何内容。其他人注意到你的帖子写得很粗心。
-
您好,在您获得帮助后,请不要破坏您的帖子。这就像在树下避难后砍倒一棵树。请允许其他未来的用户从知识中获益。回答者会付出很多努力。不要浪费他们宝贵的时间。
标签: ios objective-c class sprite-kit nsinteger