首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >递增NSNumber

递增NSNumber
EN

Stack Overflow用户
提问于 2012-04-22 19:14:46
回答 2查看 1.6K关注 0票数 1

因此,在我将动画精灵帧加载到我正在制作的游戏的缓存中后,我计算每个动画有多少帧。我这样做是因为在游戏配置中,每个动画的持续时间都有一个值,当我创建CCAnimation时,延迟属性是AnimationDuration/FramesAmount。

为了计算每个动画的帧数,我打开animations.plist并迭代条目,获取每个关键点,删除文件名,并将每个帧(作为关键点)存储在NSMutableDictionary中,数量为我在迭代过程中更新的NSNumber。问题是,我不喜欢我需要获取NSNumber intValue,do +1,然后分配另一个NSNumber并重新设置键值的方式。有没有更好的办法呢??谢谢大家!(例如..在php或JS中应该是dictonaryframe++)

代码如下:

代码语言:javascript
复制
NSString *finalPath = [path stringByAppendingPathComponent:@"animations.plist"];
NSDictionary *plistData = [[NSDictionary dictionaryWithContentsOfFile:finalPath] retain];

NSMutableDictionary *conf = [NSMutableDictionary dictionary];
NSDictionary *frames = [plistData valueForKey:@"frames"];

NSNumber *amount;
for( int i=0; i < [frames count]; i++ ) {
    NSString *frame = [[frames allKeys] objectAtIndex:i];

    NSRange range = [frame rangeOfString:@"/" options:NSBackwardsSearch];
    frame = [frame substringToIndex:range.location];

    if( [conf objectForKey:frame] == nil )
        amount = [[NSNumber alloc] initWithInt:1];
    else
        amount = [[NSNumber alloc] initWithInt:[[conf objectForKey:frame] intValue]+1];//amount++...

    [conf setObject:amount forKey:frame];
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-22 19:51:46

您可以创建一个MyNumber对象,其中包含一个int/long,以及一个访问数字的属性,而不必在每次更改它时执行整个分配操作,而不是创建一个NSNumber。甚至可以有一个addTo方法。

票数 1
EN

Stack Overflow用户

发布于 2012-04-22 19:20:52

不幸的是,对于NSNumbers,除了获得它的整数值、递增它并将其放回您的NSNumber之外,没有其他方法。

但为什么一开始就用NSNumber呢?为什么不从一个整数开始,施展你的魔力,把这个整数放在你的NSNumber实例中呢?

来向你展示我的意思:

代码语言:javascript
复制
int myCounterAsInt = 0;
for (...loopcondition..)
{
    myCounterAsInt++;
}

NSNumber *myCounterAsNSNumber = [NSNumber numberWithInt:myCounterAsInt];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10267456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档