Game *newGame = [[Game alloc] init];//error 1newGame = [gamesArray objectAtIndex:gameNumber];[newGame setTheShotArray:shotArray];[gamesArray replaceObjectAtIndex:gameNumber withObject:newGame];Nsstring *path = [self findGamesPath];[NSKeyedArchiver archiveRootObject:gamesArray tofile:path];[newGame release];//error 2
我得到错误1,表示在初始化期间存储到’newGame’的值永远不会被读取.
第二个错误说明调用者此时不拥有的对象的引用计数的不正确减少.
这是什么意思?请不要告诉我,你需要阅读内存管理,并给我一个链接.请告诉我如何解决问题.
解决方法Game *newGame = [[Game alloc] init];//error 1
您创建了一个新实例,并且您拥有它,因为您已经使用了alloc.
newGame = [gamesArray objectAtIndex:gameNumber];
您从gamesArray获取另一个实例,并将其分配给上一行中使用的同一个变量.这意味着您已经丢失了对前一个对象的引用,并且由于您拥有前一个对象,因此您负责释放它.你没有,所以你正在泄漏那个对象.
[newGame release];//error 2
此时,newGame通过gamesArray指向实例.你没有拥有它,因为你没有通过NARC获得它,因此你不应该发布它.
NARC:一个名称包含new,alloc,copy或is retain的方法.
底线:你正在泄漏你通过alloc创建的对象,并且你试图释放一个你不拥有的对象.
总结以上是内存溢出为你收集整理的xcode – 永远不会读取在初始化期间存储的值全部内容,希望文章能够帮你解决xcode – 永远不会读取在初始化期间存储的值所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)