Objective c NSString、NSArray中存在内存泄漏
我正在开发一个定制框架(当然,还有一个CocoaTouch应用程序来测试它)。这是一个很大的框架,因此不可能在这里发布(而且它不是开源的,我发誓这不是我的错!) 我已经尝试了很长一段时间,但我不可能找到答案:仪器公司指责我的应用程序存在一些漏洞。我真的是个新手,所以,我不知道我是否曲解了这些报道,但似乎是这样的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
[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: