gpt4 book ai didi

iphone - iPhone中的sqlite查询导致泄漏

转载 作者:行者123 更新时间:2023-12-03 18:03:30 24 4
gpt4 key购买 nike

我想知道调用以下格式的方法是否会导致泄漏?

[userLookupWS initWithUsername:[NSString stringWithUTF8String:(char *)sqlite3_column_text(select_system, 2)] andPassword:[NSString stringWithUTF8String:(char *)sqlite3_column_text(select_system, 3)] andURL:[NSString stringWithFormat:@"%@%@", [NSString stringWithUTF8String:(char *)sqlite3_column_text(select_system, 0)], [NSString stringWithUTF8String:(char *)sqlite3_column_text(select_system, 1)]] andSSL:[NSString stringWithUTF8String:(char *)sqlite3_column_text(select_system, 4)]];

将参数传递给此方法的另一种方法是什么,因为我在此语句中遇到 100% 内存泄漏!

问候,附件

最佳答案

为什么要将 initWithUsername: 发送到存储在变量中的对象?您应该直接将 alloc 的结果传递到那里 (userLookupWS = [[SomeClass alloc] initWithUsername:…]),并且永远不要重新初始化现有实例。

除了奇怪(它已经初始化了!为什么要再次初始化它?)之外,几乎所有 init... 方法都是为了假设每个​​实例只会调用一次而编写的,因此,向已初始化的实例发送 initWithWhatever: 消息将泄漏该实例拥有的所有内容。

除了一开始就不这样做之外,没有什么好的方法可以解决这个问题。不要向已初始化的实例发送任何 init 消息。避免这种情况的最简单方法是只直接向 alloc 的返回值发送 init 消息 ([[SomeClass alloc] init...] )。

当然,任何alloc返回的东西,你都必须释放。确保发生这种情况的最简单方法是立即自动释放对象:[[[SomeClass alloc] init…] autorelease]

关于iphone - iPhone中的sqlite查询导致泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4232956/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com