1
3
我想我可能会在进一步测试和IOS4的发布之后更新它。 上面的代码不会泄漏,即使在代码迭代200次之后,应用程序的内存占用也会恢复正常。泄漏确实发生在IOS3中,但非常小,在IOS4中,它已经完全消失在模拟器和设备中。 有些人可能会想知道为什么要实现这段代码,但在处理同时运行的整个代码中的许多不同的nsurlconnections时,它是有效的,并且是有意义的。 |
2
2
对。这是一个漏洞,可以通过添加自动释放轻松修复: [[[URLRequest alloc] initializeRequestWithValues:postBody url:verifySession httpHeader:nil delegate:self] autorelease]; 也许更好的解决方法是创建一个这样做的类函数: @interface URLRequest { // ... } // ... + (void) requestWithValues:/* ... */ // ... @end 然后您可以简单地使用[urlrequest requestwithvalues:/*…*/]不调用alloc。 |
3
2
完全不确定这段代码应该完成什么。它似乎打破了关于初始化方法的每一个约定。从初始化方法返回空指针的意义是什么?初始化方法的整个点是返回一个对象。在苹果的代码示例中,你在哪里看到过这个? 说了这句话,我不明白为什么会漏。因为它不返回一个对象,所以没有什么可以泄漏到方法外部。内部可能有泄漏。 编辑:
是的,你需要重新设计这个。目前,这种方法只是一种等待发生的灾难。如果没有其他的东西,所有关注这段代码的人都会对你正在做的事情完全困惑。 如果您不需要保留创建的对象,那么移动它的分配并在一个方法中完全清除。将方法名前缀从“initialize”更改为“setup”、“configure”、“acquire”等,这样名称就不意味着它创建、返回和对象。 如果您需要一个特定类的一次性实例,请使用类似于Michael Aaron Safyan建议的类方法(同样不要在名称中使用initialize)。类方法应该在内部初始化实例,执行所需的操作,将数据返回到任何位置,然后释放该实例。 这样,您就不必担心泄漏,其他所有可能阅读您的代码的人(包括您自己几个月)都会立即了解代码的作用。 |
payloc91 · 存储地图中的条目是否安全?它会导致内存泄漏吗? 6 年前 |
pjj · 如果GC'ed是弱可达对象,那么为什么会出现OOM错误 6 年前 |
K.R. · RxJava行为主体和使用者-这里是否存在内存泄漏? 6 年前 |
eaglefreeman · 意外的R内存管理行为 6 年前 |
areify · 如何避免此代码中的内存泄漏? 6 年前 |