autoreleasepool未在此范围错误中声明

时间:2012-05-06 07:23:27

标签: objective-c xcode4.2 objective-c++ nsautoreleasepool

我的项目是在XCode 4.2中。该项目编译为常规的调试版本。

但是当我将构建类型更改为profile(我想要分析内存使用情况)时,我从这个objective-c ++ c ++类中得到错误:

  

/Volumes/mchinen/scm/Voicer/FilterAudioMixer.mm:53:错误:流浪' @'   在程序/Volumes/mchinen/scm/Voicer/FilterAudioMixer.mm:在成员   function' void FilterAudioMixer :: WriteToBuffer(SInt16 *,int)':   /Volumes/mchinen/scm/Voicer/FilterAudioMixer.mm:53:错误:   ' autoreleasepool'在这方面没有申明   /Volumes/mchinen/scm/Voicer/FilterAudioMixer.mm:53:错误:预期   ;' before '{' token /Volumes/mchinen/scm/Voicer/FilterAudioMixer.mm:147: error: expected }'在输入结束时

下面的@autoreleasepool行是第53行:

void FilterAudioMixer::WriteToBuffer(SInt16* buffer, int nb_samps)
{
   @autoreleasepool {
      //do a per element lock (todo)
      pthread_mutex_lock(&playlist_lock);
      FilterSound *snd;

      size_t count = playlist.size();
      for (size_t i = 0; i < count; i++) {
         snd = playlist[i];
         [snd writeToBuffer:buffer samples:nb_samps];
      }
      pthread_mutex_unlock(&playlist_lock);

      if (m_mute) {
         memset(buffer, 0, sizeof(SInt16) * 2 * nb_samps);
      }
   }
}

看来@autoreleasepool只在个人资料下给我提问,为什么会这样?

为了完整性,这里是构建结果窗口中的编译行:

  

CompileC   /Users/mchinen/Library/Developer/Xcode/DerivedData/Voicer-aebonlzraugcbqarecvubzkhxlfr/Build/Intermediates/Voicer.build/Release-iphoneos/Voicer.build/Objects-normal/armv7/FilterAudioMixer.o   FilterAudioMixer.mm正常armv7 objective-c ++   com.apple.compilers.llvmgcc42       cd / Volumes / mchinen / scm / Voicer       setenv LANG en_US.US-ASCII       setenv PATH&#34; /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/ usr / bin:/仓:/ usr / sbin目录:/ sbin目录&#34;       /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/llvm-gcc-4.2   -x objective-c ++ -arch armv7 -fmessage-length = 0 -pipe -Wno-trigraphs -fpascal-strings -Os -Wreturn-type -Wunused-variable -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS .platform /开发商/软件开发工具包/ iPhoneOS5.0.sdk   -gdwarf-2 -fvisibility = hidden -fvisibility-inlines-hidden -mthumb -miphoneos-version-min = 4.0 -iquote /Users/mchinen/Library/Developer/Xcode/DerivedData/Voicer-aebonlzraugcbqarecvubzkhxlfr/Build/Intermediates/Voicer.build /Release-iphoneos/Voicer.build/Voicer-generated-files.hmap   -I /用户/ mchinen /库/开发商/ Xcode中/ DerivedData / Voicer-aebonlzraugcbqarecvubzkhxlfr /编译/中间体/ Voicer.build /释放-的iPhoneOS / Voicer.build / Voicer-自己的目标,headers.hmap   -I /用户/ mchinen /库/开发商/ Xcode中/ DerivedData / Voicer-aebonlzraugcbqarecvubzkhxlfr /编译/中间体/ Voicer.build /释放-的iPhoneOS / Voicer.build / Voicer-所有目标headers.hmap   -iquote /Users/mchinen/Library/Developer/Xcode/DerivedData/Voicer-aebonlzraugcbqarecvubzkhxlfr/Build/Intermediates/Voicer.build/Release-iphoneos/Voicer.build/Voicer-project-headers.hmap   -我引用。 -iquotePictures -iquoteCocoaSoundCloudUI -iquoteCocoaSoundCloudAPI -iquoteOHAttributedLabel -iquoteOAuth2Client -iquoteVoicer.xcworkspace -iquoteClasses -iquotehelp -iquoteJSONKit -iquoteShaders -iquoteaudio -iquotePictures / extremeprogrammingpics -iquotePictures / 2010 -iquotePictures /网络摄像头-iquotePictures / 2011 -iquotePictures / GUI -iquoteCocoaSoundCloudUI / SoundCloud.bundle -iquoteCocoaSoundCloudUI / Sources -iquoteCocoaSoundCloudAPI / Sources&#34; -iquoteOHAttributedLabel / AttributedLabel示例&#34;   -iquoteOHAttributedLabel / OHAttributedLabel -iquoteOAuth2Client / Sources -iquoteVoicer.xcworkspace / xcuserdata -iquoteJSONKit / JSONKit -iquoteaudio / CAExtras -iquotePictures / 2010/06 -iquotePictures / 2010/07 -iquotePictures / 2010/08 -iquotePictures / 2011/12 -iquotePictures / 2011 / 10 -iquotePictures / 2011/11 -iquotePictures / 2011/09 -iquotePictures / 2011/07 -iquotePictures / gui / rec -iquotePictures / gui / buttonentity -iquoteCocoaSoundCloudUI / Sources / CocoaAdditions -iquoteCocoaSoundCloudUI / Sources / SoundCloudUI -iquoteCocoaSoundCloudAPI / Sources / SoundCloudAPI&#34; -iquoteOHAttributedLabel / AttributedLabel示例/类&#34;   -iquoteOAuth2Client / Sources / OAuth2Client -iquoteVoicer.xcworkspace / xcuserdata / mchinen.xcuserdatad -iquotePictures / 2010/06 / 25 -iquotePictures / 2010/07/22 -iquotePictures / 2010/07 / 18 -iquotePictures / 2010/08/25 -iquotePictures / 2010/08/29 -iquotePictures / 2010/08/07 -iquotePictures / 2010/08/03 -iquotePictures / 2011/12/ -iquotePictures / 2011/12/14 -iquotePictures / 2011/12/17 -iquotePictures / 2011 / 12/15 -iquotePictures / 2011/10/26 -iquotePictures / 2011/10/ -iquotePictures / 2011/10/21 -iquotePictures / 2011/10/22 -iquotePictures / 2011/10/13 -iquotePictures / 2011/11 / 18 -iquotePictures / 2011/11/9 -iquotePictures / 2011/09/26 -iquotePictures / 2011/09 / 25 -iquotePictures / 2011/09 / 01 -iquotePictures / 2011/09/21 -iquotePictures / 2011/09/09 -iquotePictures / 2011/09/13 -iquotePictures / 2011/09/9 -iquotePictures / 2011/07 / 17 -iquotePictures / 2011/08 / 30 -iquotePictures / 2011/08/23 -iquotePictures / 2011/08/29 -iquoteVoicer .xcworkspace / xcuserdata / mchinen.xcuserdatad / xcdebugger -I / Users / mchinen / Library / Developer / Xcode / DerivedDat A / Voicer-aebonlzraugcbqarecvubzkhxlfr /编译/产品/释放-的iPhoneOS /包括   -I /用户/ mchinen /库/开发商/ Xcode中/ DerivedData / Voicer-aebonlzraugcbqarecvubzkhxlfr /编译/中间体/ Voicer.build /释放-的iPhoneOS / Voicer.build / DerivedSources / ARMv7的   -I /用户/ mchinen /库/开发商/ Xcode中/ DerivedData / Voicer-aebonlzraugcbqarecvubzkhxlfr /编译/中间体/ Voicer.build /释放-的iPhoneOS / Voicer.build / DerivedSources   -F /用户/ mchinen /库/开发商/ Xcode中/ DerivedData / Voicer-aebonlzraugcbqarecvubzkhxlfr /编译/产品/释放-的iPhoneOS   -DNS_BLOCK_ASSERTIONS = 1 -include /Users/mchinen/Library/Developer/Xcode/DerivedData/Voicer-aebonlzraugcbqarecvubzkhxlfr/Build/Intermediates/PrecompiledHeaders/Filter_Prefix-hbhtwvzcunnlquaijtkwxcnrmocg/Filter_Prefix.pch   -c /Volumes/mchinen/scm/Voicer/FilterAudioMixer.mm -o /Users/mchinen/Library/Developer/Xcode/DerivedData/Voicer-aebonlzraugcbqarecvubzkhxlfr/Build/Intermediates/Voicer.build/Release-iphoneos/Voicer.build/Objects - 正常/ ARMv7的/ FilterAudioMixer.o

1 个答案:

答案 0 :(得分:3)

该构建日志的重要部分是:

  

GCC-4.2

构建设置中的某些内容导致您使用旧的GCC 4.2编译器,该编译器不支持@autoreleasepool。 (this answer中的更多解释。)

在您的方案中,检查构建配置&#34; Profile&#34;正在使用。然后,检查项目中的设置并定位该构建配置。