修复我的第一个应用程序中的内存泄漏

时间:2012-07-13 21:42:13

标签: iphone xcode4

Stack Overflow的人我需要你的帮助。我即将发布我的第一个应用程序到App Store,我需要帮助修复我的应用程序的内存泄漏。它是一个简单的基于视图的应用程序,具有多个视图,iAds和带声音的按钮(该应用程序是一个简单的声板)。我需要一些关于我应该放置什么的示例和一张图片

分析器消息:Potential Leak of an Object allocated on Line 135 and stored into 'soundFileURLRef'

-(IBAction)sound25 {
    CFBundleRef mainBundle = CFBundleGetMainBundle();
    CFURLRef soundFileURLRef;
    soundFileURLRef = CFBundleCopyResourceURL(mainBundle, (CFStringRef) @"BELLMACH", CFSTR ("wav"), NULL);

    UInt32 soundID;
    AudioServicesCreateSystemSoundID(soundFileURLRef, &soundID);
    AudioServicesPlaySystemSound(soundID);
} 

2 个答案:

答案 0 :(得分:3)

documentation for CFBundleCopyResourceURL表示它遵循"Create Rule",而{{3}}基本上表示任何名称中带有“create”或“copy”的函数都会返回一个保留对象。在完成此操作之前,您拥有此对象的所有权 - 因此,当您无需进一步使用该对象时,您有责任在该对象上调用CFRelease。据推测,在您使用它来创建和播放系统声音之后,您可以添加

CFRelease(soundFileURLRef);

在该方法的最后,没问题,假设你没有在其他任何地方坚持或需要soundFileURLRef

答案 1 :(得分:0)

由于名称“CFBundleCopyResourceURL”包含单词“Copy”,它遵循“创建规则”并且您“拥有”该对象并负责在完成后释放它。