我的项目是在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
答案 0 :(得分:3)
该构建日志的重要部分是:
GCC-4.2
构建设置中的某些内容导致您使用旧的GCC 4.2编译器,该编译器不支持@autoreleasepool
。 (this answer中的更多解释。)
在您的方案中,检查构建配置&#34; Profile&#34;正在使用。然后,检查项目中的设置并定位该构建配置。