我熟悉为我自己的UIView子类创建XIB的大部分过程,但并不是所有的东西都适合我 - 这主要与IBOutlets链接有关.我可以让它们以迂回的方式工作.
我的设置是这样的:
我的init方法是我遇到问题的地方.
我尝试使用NSBundle mainBundle的'loadNibNamed'方法并将所有者设置为'self',希望我创建一个视图实例,它会自动将它的出口与我班级的出口相匹配(我知道)怎么做,我很小心).然后我想我想让'self'等于那个nib中索引0的子视图,而不是做
self = [super init];
Run Code Online (Sandbox Code Playgroud)
或类似的东西.
我觉得我在这里做错了,但是在线的例子在init方法中有类似的事情,但他们将子视图0分配给view属性并将其作为子项添加 - 但是那不是总共两个MyClass实例?一个基本上与IBOutlets无关,包含通过loadNibNamed实例化的子MyClass?或者充其量,它不是一个MyClass实例,带有一个额外的中间UIView,其中包含我最初想要的所有IBOutlets作为MyClass的直接子项吗?当涉及到像instanceOfMyClass.frame.size.width这样的事情时,这会带来轻微的烦恼,因为它返回0,当引入的子UIView返回我正在寻找的实际帧大小时.
我在做错的是我在init方法中搞乱了loadNibNamed吗?我应该做更像这样的事情吗?
MyClass *instance = [[MyClass alloc] init];
[[NSBundle mainBundle] loadNibNamed:@"MyClass" owner:instance options:nil];
Run Code Online (Sandbox Code Playgroud)
或者像这样?
MyClass *instance = [[[NSBundle mainBundle] loadNibNamed:@"MyClass" owner:nil options:nil] objectAtIndex:0];
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的任何帮助.
我有一个问题,我试图在AVAudioSession上更改我的音频类别,开始录制麦克风输入.
如果我使用当前的实现(以及许多替代实现,尝试解决此问题),当设备的静音开关没有设置(即取消静音)时,那么一切都很好.
如果我在静音时这样做 - 来自任何先前的音频类别(MediaPlayback,SoloAmbient等),会有很大的延迟,并且导致设备在一段时间内表现得非常缓慢.
这就是我正在做的事情.在应用启动时,我这样做:
AudioSessionInitialize(NULL, NULL, NULL, NULL);
UInt32 sessionCategory = kAudioSessionCategory_SoloAmbient;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);
AudioSessionSetActive(true);
Run Code Online (Sandbox Code Playgroud)
然后,开始录制:
AudioSessionInitialize(NULL, NULL, NULL, NULL);
UInt32 sessionCategory = kAudioSessionCategory_RecordAudio;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);
AudioSessionSetActive(true);
Run Code Online (Sandbox Code Playgroud)
如果我调试并逐步执行,一切都和预期的一样快,直到我点击AudioSessionSetProperty - 这就是设备挂起的地方.当我使用RecordAudio和PlayAndRecord类别时,就会发生这种情况.
发生这种情况时,我在控制台中收到以下消息:
AudioSessionSetProperty posting message to kill mediaserverd
AudioSessionSetActive posting message to kill mediaserverd
AudioQueueSetProperty posting message to kill mediaserverd
AllocateBuffer posting message to kill mediaserverd
Run Code Online (Sandbox Code Playgroud)
我在网上搜索过这些内容,但是我们从未报告过这种延迟,而且他们也没有强调我可能做错了什么.
有没有人经历过类似的事情,你知道我能做些什么来解决这个问题吗?
提前致谢