@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 – 过度释放对象,应用程序不会崩溃所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)