Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c NSString、NSArray中存在内存泄漏_Objective C_Memory Leaks_Nsstring_Nsarray_Instruments - Fatal编程技术网

Objective c NSString、NSArray中存在内存泄漏

Objective c NSString、NSArray中存在内存泄漏,objective-c,memory-leaks,nsstring,nsarray,instruments,Objective C,Memory Leaks,Nsstring,Nsarray,Instruments,我正在开发一个定制框架(当然,还有一个CocoaTouch应用程序来测试它)。这是一个很大的框架,因此不可能在这里发布(而且它不是开源的,我发誓这不是我的错!) 我已经尝试了很长一段时间,但我不可能找到答案:仪器公司指责我的应用程序存在一些漏洞。我真的是个新手,所以,我不知道我是否曲解了这些报道,但似乎是这样的 [NSArray array] [NSString stringWithCString:encoding:] [NSString stringWithFormat:] [NSString

我正在开发一个定制框架(当然,还有一个CocoaTouch应用程序来测试它)。这是一个很大的框架,因此不可能在这里发布(而且它不是开源的,我发誓这不是我的错!)

我已经尝试了很长一段时间,但我不可能找到答案:仪器公司指责我的应用程序存在一些漏洞。我真的是个新手,所以,我不知道我是否曲解了这些报道,但似乎是这样的

[NSArray array]
[NSString stringWithCString:encoding:]
[NSString stringWithFormat:]
[NSString stringWithUTF8String:]
[_obj_rootAlloc]
[__NSArrayM]
这是一些主要的原因,对我来说真的没有任何意义


在此链接中,您可以找到仪器“运行”报告。有人能看看这是否可能意味着什么吗?

仪器报告泄漏物体是在哪里产生的,而不是它们成为官方泄漏的地点。在某些地方,您使用这些方法创建的对象要么被过度定义,要么在应该发布的时候没有发布。

Instruments报告泄漏对象的创建位置,而不是它们成为官方泄漏的位置。在某些地方,您使用这些方法创建的对象要么被过度定义,要么在应该发布的时候没有发布。

实际的问题是我对合成属性所做的假设。我有这样的想法:

@interface MyClass : NSObject

@property(nonatomic,retain) NSString *myProperty;

@end
在实施过程中:

@implementation MyClass
@synthesize myProperty=_myProperty;

@end
我假设
@synthesis
也会
自动释放属性,但那是我的错误。我通过以下方式修复了它:

@implementation MyClass
@synthesize myProperty=_myProperty;

-(void)dealloc
{
    [_myProperty release];
    [super dealloc];
}

@end

谢谢你的帮助

实际问题是我对合成属性的假设。我有这样的想法:

@interface MyClass : NSObject

@property(nonatomic,retain) NSString *myProperty;

@end
在实施过程中:

@implementation MyClass
@synthesize myProperty=_myProperty;

@end
我假设
@synthesis
也会
自动释放属性,但那是我的错误。我通过以下方式修复了它:

@implementation MyClass
@synthesize myProperty=_myProperty;

-(void)dealloc
{
    [_myProperty release];
    [super dealloc];
}

@end

谢谢你的帮助

我不确定人们是否会下载一个20+m的zip文件来尝试查找源代码中无法读取的漏洞…您应该使用NSAutoreleasePool:我不确定人们是否会下载一个20+m的zip文件来尝试查找源代码中无法读取的漏洞…您应该使用NSAutoreleasePool: