NSString stringWithUTF8String中的内存泄漏

问题描述

| 我正在打电话给数据库。打电话后,我发现Nsstring中有泄漏。有人有解决办法将其删除吗?
 Nsstring *pic = [Nsstring stringWithUTF8String:(char *)sqlite3_column_text(selectStatement,5)];
在上面的代码中,我发现90%的泄漏。我只是从数据库中读取数据。     

解决方法

        请很好地说明问题,否则其他人将无法确定您的确切问题。 我认为您正在分配[NSString stringWithUTF8String:(char *)sqlite3_column_text(selectStatement,5)]的值;到您的类对象属性。 您可以在相应的类dealloc方法中释放分配的类字符串属性。也可以将其设置为nil。 例: 如果你在做
YourClass *classObj =[ YourClass  alloc] init];

classObj.myStringvariable = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectStatement,5)];
类的结构会喜欢
@interface YourClass {

    NSString *myStringvariable ;

}

@property (nonatomic,retain)  NSString *myStringvariable ;
.m文件将是
@synthesise myStringvariable ;


-(void)init{

 myStringvariable  = @\"\";

}

-(void)dealloc{

 [myStringvariable  release];
 myStringvariable  = nil;
}
检查它。此结构将不会显示内存泄漏。     ,        您要拨4来释放内存吗? 如果您正在执行此操作,则可能是ѭ5泄漏,但是我们需要知道您对它的处理方式(它是自动发布的,因此您不需要ѭ6泄漏,但是您可以将其保留在其他位置在您的代码中)。 此外,将
sqlite3_column_text
直接传递到
stringWithUTF8String
是不安全的,因为如果返回
nil
,您的应用程序将崩溃。 您可能还考虑使用fMDB,一个围绕sqlite3的ObjC包装器。在这里找到它。