0

我只是想知道是否有人可以向我解释为什么以下几行显示为 Instruments 内存泄漏:

self.videoEngine = [[VideoEngine alloc] initWithCallbackName:@"IntroFinished"];

self.videoEngine = [[VideoEngine alloc] initWithCallbackName:@"MainMovieFinished"];

self.timerMap = [NSTimer scheduledTimerWithTimeInterval:fps target:self selector:@selector(updateAnimationTimer) userInfo:nil repeats:YES];

NSString *locationName2 = [[NSString alloc] initWithString:[locationName substringFromIndex:test]];

初始化时不使用预设的 NSString 有问题吗?在 self.videoEngine 和 self.timerMap 的示例中,它们都具有(非原子,保留)属性,并且在使用前被合成。

4

1 回答 1

3

如果您不使用 Arc(其中提到了保留,我认为您没有使用),那么这将是您的内存泄漏。

当您分配 VideoEngine 属性时,它正在对您的对象执行另一个保留。您需要将 autorelease 添加到 alloc 语句的末尾。

self.videoEngine = [[[VideoEngine alloc] initWithCallbackName:@"IntroFinished"] autorelease];

self.videoEngine = [[[VideoEngine alloc] initWithCallbackName:@"MainMovieFinished"] autorelease];

self.timerMap = [NSTimer scheduledTimerWithTimeInterval:fps target:self selector:@selector(updateAnimationTimer) userInfo:nil repeats:YES];

NSString *locationName2 = [[NSString alloc] initWithString:[locationName substringFromIndex:test]];
于 2012-07-19T09:50:07.197 回答