奇怪的是,它不是每次创建和添加CCSprite,并且每次运行应用程序时它所抱怨的行都不同.我究竟做错了什么?有没有更好的方法呢?
这是我的代码:
NSMutableArray *tempNumberArray = [[NSMutableArray alloc] init];tempSprite = [[CCSprite alloc] initWithSpriteFramename:@"0.png"];[tempNumberArray addobject:tempSprite];[tempSprite release];tempSprite = nil;tempSprite = [[CCSprite alloc] initWithSpriteFramename:@"0.png"];[tempNumberArray addobject:tempSprite];[tempSprite release];tempSprite = nil;tempSprite = [[CCSprite alloc] initWithSpriteFramename:@"0.png"];[tempNumberArray addobject:tempSprite];[tempSprite release];tempSprite = nil;tempSprite = [[CCSprite alloc] initWithSpriteFramename:@"0.png"];[tempNumberArray addobject:tempSprite];[tempSprite release]; tempSprite = nil;self.numbersArray = [NSArray arrayWithArray:tempNumberArray];[tempNumberArray release];tempNumberArray = nil;
编辑:谢谢你看看这个.
我第一次使用tempSprite时将其初始化为:
CCSprite * tempSprite = [[CCSprite alloc] initWithSpriteFramename:@"0.png"];[tempNumberArray addobject:tempSprite];[tempSprite release]; tempSprite = nil;
我在每次分配之间释放tempSprite,否则会泄漏. [tempNumberArray addobject:tempSprite]保留sprite对象.
解决方法 我不确定你为什么会看到泄漏.你发布的代码是正确的,虽然没有必要每次都将tempSprite设置为nil;你真的只需要这样做,如果有可能你会使用指针尝试在释放它后发送消息.然而,它并没有伤害任何东西.我可以建议的唯一改进是在循环中进行数组构造:
// You can also use an autoreleased mutable array,since you don't need it// to stick around after construction.NSMutableArray * tempNumbersArray = [NSMutableArray array];int i;for( i = 0; i < NUM_OF_Sprites; i++ ){ CCSprite * tempSprite = [[CCSprite alloc] initWithSpriteFramename:@"0.png"]; [tempNumbersArray addobject:tempSprite]; [tempSprite release];}self.numbersArray = [NSArray arrayWithArray:tempNumbersArray];总结
以上是内存溢出为你收集整理的objective-c – 我如何在Objective C中创建和填充NSArray有什么问题?全部内容,希望文章能够帮你解决objective-c – 我如何在Objective C中创建和填充NSArray有什么问题?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)