我正在开发一个需要使用AVFoundation框架播放声音的iOS应用程序.Xcode 4中的工作区结构包含两个项目:
构建实用程序库之后,它会生成一个静态库,该库在主应用程序中用作框架.
因此,当尝试使用下面的代码在主应用程序内播放声音时,它会按预期工作.
NSString *resourcePath = [[NSBundle mainBundle] resourcePath];
NSString *path = [NSString stringWithFormat:@"%@/sound.mp3", resourcePath];
NSURL *url = [NSURL fileURLWithPath:path];
NSError *error = nil;
AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url
error:&error];
[audioPlayer play];
Run Code Online (Sandbox Code Playgroud)
相反,当尝试使用与上面相同的代码在实用程序库中播放完全相同的声音(或任何其他声音)时,即使错误为nil且audioPlayer属性值为正确,也不会播放任何声音(数字)频道,持续时间).
我确保AVFoundation框架在两个项目中.
此外,我的类使用AVAudioPlayerDelegate协议并实现这两个方法:
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag;
- (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError *)error;
Run Code Online (Sandbox Code Playgroud)
尝试播放声音后,这些方法都不会被调用.
如果我使用AudioToolbox框架,那么它会播放声音.但AVFoundation由于几个原因,我对使用感兴趣.
怎么知道发生了什么?我错过了什么AVFoundation吗?它可能与AVAudioPlayer在静态库中使用有关吗?
提前致谢.
audio objective-c avfoundation xcode4 automatic-ref-counting
我正在使用Xcode 4.3进行Objective-C开发.我喜欢在其他文本编辑器中使用的一个功能(我知道Xcode是一个IDE),它跳转到同一代码文件中的方法定义.
例如,如果我在@implementation of Calculator并且计算器有10种方法,我会想要一种在它们之间跳转的方法.
如果我按下命令+ LI可以跳转到特定的行号,有没有办法以类似的方式跳转到方法定义?例如,而不是键入行号以仅键入方法名称的开头.
我可以以某种方式打开一个对话框,键入方法签名的开头并立即查看搜索结果,如果我选择一种方法,它会让我接受它吗?
有没有办法从方法跳转到下一个方法?
我找不到一种方法将书签放在XCode 4的代码中.我知道这#pragma mark件事,但它不是我想要的.我需要的东西是我可以通过鼠标点击放置和删除,并在下一个和上一个之间导航,就像在VS.
有什么我想念的吗?
最近,我开始使用Xcode 4开发iOS应用程序.
在Xcode intellisense的自动完成框中,每个建议之前都有一些彩色框中的字母.我知道它们代表了我们输入的单词的属性,如f,T,C,M,P,C,K,#等.

是否有某种词汇表可以找到它们的快速含义?
f,C,T,#的含义是可以理解的(函数,类等),但还有许多其他我不知道的.我认为这些字母是所有IDE的标准,如Visual Studio,Netbeans等.如果我错了,请纠正我.
请建议.
我正在尝试在Xcode 4.2 UITextView中创建一个新行,当我执行alt + return时,它会转到下一行,但在构建和运行时不显示.
我找到了一些其他帖子,展示了如何使用脚本添加脚本来增加构建号:
但是我想要做的只是在我使用ARCHIVE(前后)时增加内部版本号.
示例:如果当前内部版本号为21,那么当我选择产品>归档时,内部版本号将增加到22,它将完成构建和创建内部版本号为22的存档文件的过程,然后当它是完成归档后,它会将内部版本号增加到23.
可能重复:
Xcode 4 - "存档"显示为灰色?
我想通过Xcode 4提交我的iOS应用程序.问题是我无法进行Build for Archiving.它的非活动和灰色(菜单项产品 - >构建 - >构建存档),我不知道为什么.
有人有想法吗?
我在Xcode 4和嵌套项目中遇到了无数问题,这些问题在Xcode 3.2下运行良好.这是一个我无法解决的基本问题:
我正在构建一个cocoa框架,需要另一个cocoa框架,我有源代码.所以我执行通常的步骤:
.xcodeproj所需框架的文件拖到我的主框架项目中${BUILT_PRODUCTS_DIR}并告诉我它们位于DerivedData/Debug(或Release)位置然后我点击[CMD] + B进行构建,它告诉我它没有找到嵌套框架的头文件.当我检查设置时,用户标题搜索路径包含DerivedData/Debug的路径,里面有嵌套的框架目标,其中包含Versions/A/Headers中的头文件.
我坐在这里,任何人都知道我做错了什么?
当我将用户标题搜索路径更改为时,在构建调试时问题就消失了.但是,当构建Distribution时,这不起作用,因为框架然后使用它们的Release设置,最终在不同的子目录中...${BUILT_PRODUCTS_DIR}/MyFramework.framework/Headers
我的临时解决方案是为嵌套项目定义分布配置.这样就可以找到头文件并且链接器可以成功链接.
我有一个带有常规目标和单元测试目标的XCode4/iOS项目.一切正常,除非我尝试#import我的测试类中的一个类并尝试使用它.如果我尝试构建单元测试目标,我会收到以下链接错误:
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_FRRCategory", referenced from:
objc-class-ref in CategoryTests.o
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
在CategoryTests.m中,我以这种方式导入头文件:
#import "../todoro/FRRCategory.h"
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我刚刚使用故事板开始我的第一个应用程序.我正在使用Xcode 4.5和iOS 6 SDK.我想知道如何更改文档大纲(故事板左侧的面板)中列出控制器的顺序.
xcode4 ×10
xcode ×6
ios ×3
objective-c ×2
audio ×1
avfoundation ×1
bookmarks ×1
cocoa ×1
frameworks ×1
intellisense ×1
ios5 ×1
iphone ×1
macos ×1
ocunit ×1
osx-lion ×1
submit ×1
uistoryboard ×1
uitextview ×1
unit-testing ×1
xcode4.2 ×1