ios – 过度释放对象,应用程序不会崩溃

ios – 过度释放对象,应用程序不会崩溃,第1张

概述@property (retain) NSString *testString;self.testString = [[NSString alloc] initWithString:@"aaa"];[self.testString retain]; self.testString = [NSString stringWithString:@"a"];[self.testString
@property (retain) Nsstring *testString;self.testString = [[Nsstring alloc] initWithString:@"aaa"];[self.testString retain];    self.testString = [Nsstring stringWithString:@"a"];[self.testString release];[self.testString release];

我们一行一行:

第2行:保留testString = 2的计数
第3行:保留testString = 3的计数
第4行:保留testString = 1的计数
第5行:保留testString = 0的计数
第6行:它应该崩溃

即使在CoreFoundation中有其他东西持有testString,它最终也会消失.但该应用程序从未因此而崩溃.

有谁能解释一下?谢谢!

解决方法 我不是这方面的专家,所以请带上一粒盐.我猜[Nsstring stringWithString:@“a”]可能只返回文字字符串@“a”,即它只返回其参数.因为@“a”是一个文字,它可能驻留在常量内存中并且不能被释放(因此它应该以非常高的保留计数进行初始化). 总结

以上是内存溢出为你收集整理的ios – 过度释放对象,应用程序不会崩溃全部内容,希望文章能够帮你解决ios – 过度释放对象,应用程序不会崩溃所遇到的程序开发问题。

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

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

原文地址: http://outofmemory.cn/web/1078289.html

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

发表评论

登录后才能评论

评论列表(0条)

保存