iOS   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了xcode – 永远不会读取在初始化期间存储的值大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我正在尝试创建一个游戏,以便我可以更改其数据并将其保存回来.我在评论行上得到两个错误.为什么我会收到这些错误.我分配了游戏,所以我应该将其正确发布.这是我保存游戏的代码 Game *newGame = [[Game alloc] init];//error 1 newGame = [gamesArray objectATindex:gamenumber]; [newGame setTheShotA
我正在尝试创建一个游戏,以便我可以更改其数据并将其保存回来.我在评论行上得到两个错误.为什么我会收到这些错误.我分配了游戏,所以我应该将其正确发布.这是我保存游戏的代码

Game *newGame = [[Game alloc] init];//error 1
newGame = [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 – 永远不会读取在初始化期间存储的值所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。