xcode – 永远不会读取在初始化期间存储的值
发布时间:2020-12-14 17:18:14 所属栏目:百科 来源:网络整理
导读:我正在尝试创建一个游戏,以便我可以更改其数据并将其保存回来.我在评论行上得到两个错误.为什么我会收到这些错误.我分配了游戏,所以我应该将其正确发布.这是我保存游戏的代码 Game *newGame = [[Game alloc] init];//error 1newGame = [gamesArray objectAtI
我正在尝试创建一个游戏,以便我可以更改其数据并将其保存回来.我在评论行上得到两个错误.为什么我会收到这些错误.我分配了游戏,所以我应该将其正确发布.这是我保存游戏的代码
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创建的对象,并且你试图释放一个你不拥有的对象. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |