objective-c – 我如何在Objective C中创建和填充NSArray有什么问题?

objective-c – 我如何在Objective C中创建和填充NSArray有什么问题?,第1张

概述我使用cocos2d来填充NSMutable数组,然后从该数组创建一个NSArray.我连续3次使用不同的数组名称执行以下代码,第三次,Instruments报告了我添加到数组中的每个元素的泄漏. 奇怪的是,它不是每次创建和添加CCSprite,并且每次运行应用程序时它所抱怨的行都不同.我究竟做错了什么?有没有更好的方法呢? 这是我的代码: NSMutableArray *tempNumberAr 我使用cocos2d来填充NSMutable数组,然后从该数组创建一个NSArray.我连续3次使用不同的数组名称执行以下代码,第三次,Instruments报告了我添加到数组中的每个元素的泄漏.

奇怪的是,它不是每次创建和添加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有什么问题?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1225620.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存