小编u.g*_*gen的帖子

AudioQueueDispose延迟

根据此处的文档https://developer.apple.com/library/mac/documentation/MusicAudio/Reference/AudioQueueReference/#//apple_ref/c/func/AudioQueueDispose

err = AudioQueueDispose(queue, true);
Run Code Online (Sandbox Code Playgroud)

我使用true这样处理AudioQueue立即发生,虽然它有时会立即处理队列,有时它在设备上延迟3-4秒到13秒.err = AudioQueueStop(queue, true)也有同样的问题.

我的理解是两个函数都尝试刷新释放缓冲区并且即将被排队......
所以我甚至会帮助我的回调函数来刷新缓冲区,如果AudioQueueDispose要调用的话.

static void MyAQOutputCallBack(void *inUserData, AudioQueueRef inAQ, AudioQueueBufferRef inCompleteAQBuffer)
{
  if (player.shouldDispose) {
        printf("player shouldDispose !!!!!!!!!!!\n\n\n\n\n\n");
        OSStatus dispose = AudioQueueFlush (inAQ);
        return;
    }
}
Run Code Online (Sandbox Code Playgroud)

由于我要AudioQueues在播放曲目后使用录制内容,因此我需要在没有延迟的情况下返回此函数.几百毫秒还可以,但3-4秒?这是不可接受的.

其他AudioQueue函数也在同一个线程上调用,它们似乎工作正常.

我也尝试在主线程上调用它来确保它是否会改变任何东西

[self performSelectorOnMainThread:@selector(tryOnMain) withObject:nil waitUntilDone:NO];

要么

dispatch_sync(dispatch_get_main_queue(),^{ 没有任何区别

知道可能会发生什么吗?

audio xcode objective-c audioqueueservices ios

26
推荐指数
1
解决办法
609
查看次数

如何在AppDelegate中执行Segue?

我正在尝试使用Storyboard在IOS 5.1上完成一个应用程序.基本上我正在做一个Dropbox应用程序.由于我使用Dropbox SDK链接到Dropbox是在AppDelegate.m中处理的.用户可以选择在会话中取消链接,并在不同的View Controller中再次链接.因此,每次用户链接和取消链接的应用程序必须将视图从Appdelegate切换到未连接到rootviewcontroller的视图控制器

在最初的Dropbox示例中,Dropbox处理了如下代码的转换

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    if ([[DBSession sharedSession] handleOpenURL:url]) {
        if ([[DBSession sharedSession] isLinked]) {
            [navigationController pushViewController:rootViewController.photoViewController animated:YES];
        }
        return YES;
    }

    return NO;
}
Run Code Online (Sandbox Code Playgroud)

但是我正在使用带有导航控制器的Storyboard,并且以下任何一种方法都不起作用我将方法放在注释中.

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    if ([[DBSession sharedSession] handleOpenURL:url]) {
        if ([[DBSession sharedSession] isLinked]) {

            NSLog(@"App linked successfully!");
            // At this point you can start making API calls

            /*UIViewController *viewController = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:NULL] instantiateViewControllerWithIdentifier:@"MeetingViewController"];
            [self.navigationController pushViewController:viewController animated:YES]; */

           //[self performSegueWithIdentifier:@"xxxx" sender:self];

           /* LoginDropboxViewController *loginController=[[LoginDropboxViewController alloc] initWithNibName:@"LoginDropbox" …
Run Code Online (Sandbox Code Playgroud)

objective-c storyboard dropbox ios segue

11
推荐指数
2
解决办法
1万
查看次数

UItextview透明颜色IOS

我想将UItextview的颜色设置为透明但不完全透明.我希望背景上有点灰色或黑色,就像图片一样

在此输入图像描述

我现在正在使用此代码

 _textView.backgroundColor = [UIColor clearColor];
Run Code Online (Sandbox Code Playgroud)

如何让它像上面的图片一样透明?任何代码示例?

transparent uitextview ios5

9
推荐指数
1
解决办法
8433
查看次数

为TeamCity Build Configuration选择Git分支

我希望通过我的CI框中的teamcity完成以下操作.

Master branch commit : Build and Release
Beta branch commit: Build and Release to Crashlytics
All other commits to any other branch: Build
Run Code Online (Sandbox Code Playgroud)

(旁注,因为我们的大多数开发分支可能包含也可能不包含前缀,因此很难使用"feature-*"分支命名)

关注此问题为TeamCity Build选择Git分支

我在项目设置中创建了一个配置参数

在此输入图像描述

然后

我的VCS根设置

在此输入图像描述

然后我创建了一个构建模板

在此输入图像描述

当我创建构建时,我确保分支名称是正确的

在此输入图像描述

我也试过编辑触发器

在此输入图像描述

然而,当我将提交推送到Beta分支时,这无法正常工作

我认为因为ref/heads/*默认构建运行所有分支

和Beta和Master显示"待定"

在此输入图像描述

我怎么能纠正这个?

teamcity continuous-integration build github teamcity-9.0

9
推荐指数
1
解决办法
2708
查看次数

SwiftUI 无法预览此文件 - 发生意外错误

一个仅针对 iOS 的 UIKit Xcode 项目,它有 3 个用于不同构建配置的目标。

\n

当我添加 swiftui 文件时,它可以正常构建并运行,但我看不到最简单的预览Cannot preview this file - un expected error occurred

\n

确切的诊断是

\n
HumanReadableSwiftError\n\nProviderError: ProviderError: noPreviewInfos(runDestination: Simulator - iOS 15.2 | iphonesimulator | x86_64 | iPhone 13 Pro Max | Apple Watch Series 6 - 44mm, thunkConfiguration: <IDEBuildOperationConfiguration buildCommand: 8, buildParameters: <IDEBuildParameters:0x7fe4bffe2f40:action=build:command=<IDEConcretePrimitiveSchemeCommand:0x7fe4bb382500:Run>:config=Release:dest=iPhone 13 Pro Max:arch=x86_64:workspaceArena=<IDEWorkspaceArenaSnapshot: 0x7fe4bbbbf2b0>:\noverridingProperties=(\n{ // Preview overrides (immutable)\n   DSTROOT = \xe3\x80\x90:/Users/x/Library/Developer/Xcode/DerivedData/MayApp-ezbgeibumcswldddlegmcbpnukij/Build/Intermediates.noindex/Previews/MayApp/ReleaseProducts\xe3\x80\x91\n   ENABLE_PREVIEWS = \xe3\x80\x90YES\xe3\x80\x91\n   OBJROOT = \xe3\x80\x90:/Users/x/Library/Developer/Xcode/DerivedData/MayApp-ezbgeibumcswldddlegmcbpnukij/Build/Intermediates.noindex/Previews/MayApp/Intermediates.noindex\xe3\x80\x91\n   SYMROOT = \xe3\x80\x90:/Users/x/Library/Developer/Xcode/DerivedData/MayApp-ezbgeibumcswldddlegmcbpnukij/Build/Intermediates.noindex/Previews/MayApp/Products\xe3\x80\x91\n},\n):\ncollectBuildTimeStatistics=NO\ncollectTimelineMetrics=NO>, executionEnvironment: Optional(<IDEExecutionEnvironment: 0x7fe52c865050>), singleFileToBuild: nil, buildLog: nil, …
Run Code Online (Sandbox Code Playgroud)

xcode ios swift swiftui

9
推荐指数
1
解决办法
3123
查看次数

音频队列播放完成的精确时间

我正在使用音频队列来播放音频文件.我需要精确计时最后一个缓冲区.我需要在播放最后一个缓冲区后的150ms-200ms内通知一个函数...

通过回调方法我知道有多少缓冲区被排队

我知道缓冲区大小,我知道上一个缓冲区填充了多少字节.

首先,我初始化一些缓冲区,然后用音频数据填充缓冲区,然后将它们排队.当音频队列需要填充缓冲区时,它会调用回调并用缓冲区填充数据.

当没有更多可用的音频数据时,Audio Queue会向我发送最后一个空缓冲区,所以我用我拥有的任何数据填充它:

            if (sharedCache.numberOfToTalPackets>0)
            {
                if (currentlyReadingBufferIndex==[sharedCache.baseAudioCache count]-1) {
                    inBuffer->mAudioDataByteSize = (UInt32)bytesFilled;
                    lastEnqueudBufferSize=bytesFilled;
                    err=AudioQueueEnqueueBuffer(inAQ,inBuffer,(UInt32)packetsFilled,packetDescs);
                    if (err) {
                        [self failWithErrorCode:err customError:AP_AUDIO_QUEUE_ENQUEUE_FAILED];
                    }
                    printf("if that was the last free packet description, then enqueue the buffer\n");
                    //go to the next item on keepbuffer array
                    isBufferFilled=YES;
                    [self incrementBufferUsedCount];
                    return;
                }
            }
Run Code Online (Sandbox Code Playgroud)

当音频队列通过回调要求更多数据并且我没有更多数据时,我开始倒计时缓冲区.如果缓冲区计数等于零,这意味着要播放的航班上只剩下一个缓冲区,则完成片刻播放时我会尝试停止音频队列.

-(void)decrementBufferUsedCount
{

    if (buffersUsed>0) {
        buffersUsed--;
        printf("buffer on the queue %i\n",buffersUsed);
        if (buffersUsed==0) {
            NSLog(@"playback is finished\n");
            // end playback
            isPlayBackDone=YES;
            double sampleRate = dataFormat.mSampleRate;
            double bufferDuration = …
Run Code Online (Sandbox Code Playgroud)

objective-c core-audio audioqueueservices audioqueue ios

8
推荐指数
1
解决办法
1929
查看次数

SearchDisplayController SearchBar重叠导航栏并调整自身的大小IOS7

我的应用程序有一个tableview控制器,显示为表单.

在tableviewcontoller的顶部有一个UView,在UIView里面有一个导航栏和一个搜索栏.

一切都运行良好的旧版IOS,但在IOS7用户点击搜索栏时,一切都搞砸了.

正常: 在此输入图像描述

当用户开始输入时: 在此输入图像描述

结束后: 在此输入图像描述

in.h中

UITableViewController<UITextFieldDelegate,UISearchDisplayDelegate,UISearchBarDelegate>
@property (nonatomic,weak) IBOutlet UINavigationBar *topBar;
Run Code Online (Sandbox Code Playgroud)

尝试了一些事情,但代码似乎没有改变任何东西,当它放入一个断点,它进入委托方法虽然

in.m

//-(void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller {
//    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {
//        CGRect statusBarFrame =  self.topBar.frame;
//        [UIView animateWithDuration:0.25 animations:^{
//            for (UIView *subview in self.tableView.subviews)
//                subview.transform = CGAffineTransformMakeTranslation(0, statusBarFrame.size.height+50);
//        }];
//    }
//}
//
//-(void)searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller {
//    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {
//        [UIView animateWithDuration:0.25 animations:^{
//            for (UIView *subview in self.tableView.subviews)
//                subview.transform = CGAffineTransformIdentity;
// …
Run Code Online (Sandbox Code Playgroud)

objective-c uitableview uisearchbar ios ios7

6
推荐指数
1
解决办法
2632
查看次数

缓冲区大小较小时,音频队列播放速度过快

我能够使用音频文件服务+音频队列服务流式传输和播放m4a文件.由于文件类型,音频队列无法使用该文件的比特率信息.

下载完所有音频数据包后,我将它们提供给播放器.

当我选择一个大约32768或16384的缓冲区大小,因为回调被调用较少而且每个缓冲区大小很大,它似乎几乎以常规速度播放.问题有时我也要播放小文件但是当我选择小型缓冲区大小-512或1024或2048到8192时 - 音频播放速度非常快且偶尔会出现故障.

我知道在c回调中调用objective-c函数不是一个好主意,但为了可读性和易用性,我这样做.无论我认为这不是问题.

// allocate the buffers and prime the queue with some data before starting
AudioQueueBufferRef buffers[XMNumberPlaybackBuffers];

int i;
for (i = 0; i < XMNumberPlaybackBuffers; ++i)
{
    err=AudioQueueAllocateBuffer(queue, XMAQDefaultBufSize, &buffers[i]);
    if (err) {
        [self failWithErrorCode:err customError:AP_AUDIO_QUEUE_BUFFER_ALLOCATION_FAILED];
    }
    @synchronized(self)
    {
        state=AP_WAITING_FOR_QUEUE_TO_START;
    }


    // manually invoke callback to fill buffers with data
    MyAQOutputCallBack((__bridge void *)(self), queue, buffers[i]);

}
Run Code Online (Sandbox Code Playgroud)

我还从一个可变的字典中获取音频包...

#define XMNumberPlaybackBuffers 4 
#define XMAQDefaultBufSize 8192 
#pragma mark playback callback function
static void MyAQOutputCallBack(void *inUserData, AudioQueueRef inAQ, AudioQueueBufferRef …
Run Code Online (Sandbox Code Playgroud)

buffer objective-c audioqueueservices audioqueue ios

6
推荐指数
1
解决办法
1723
查看次数

UIView滑动动画故障

我正在尝试添加滑动以将视图更改为我的tabbar应用程序.像页面视图一样.

到目前为止,我的解决方案正在工作,但我在刷卡时出现故障,我认为这些是view.frame(CGRectMake)更改导致这些黑色故障,但我还没弄清楚它为什么会发生.

它不会发生在设备坏的模拟器中,但仍然可见且不平滑.

在此输入图像描述

所以在我的根tabbar控制器(TabViewController : UITabBarController)

#import <QuartzCore/QuartzCore.h>

#define XCTabViewDummyNSUintegerNOTargetVC 10
#define XCTabViewSwipeYAxisMax 40
#define XCTabViewSwipeXAxisMax 40

@interface XCTabViewController ()
@property (nonatomic, strong) id<XCTabControlStrategy> tabStrategy;
@property double swipeRatio;
@property double toViewX;
@property double fromViewX;

@property UIView * fromView;
@property UIView * toView;
@end
Run Code Online (Sandbox Code Playgroud)

然后

-(void)viewDidAppear:(BOOL)animated
{
    XCDeviceType deviceType = [UIViewUtils currentDeviceType];

    swipeRatio = 320;

    switch (deviceType) {

        case XCiPhone4:
            swipeRatio = 320;
            break;

        case XCiPhone5:
            swipeRatio = 320;
            break;

        case XCiPhone6:
            swipeRatio = 375; …
Run Code Online (Sandbox Code Playgroud)

animation objective-c uiview uigesturerecognizer ios

5
推荐指数
1
解决办法
236
查看次数

JASidePanels使用故事板的示例-2:崩溃

我正在尝试使用storyboard实现JASidePanels example2. https://github.com/gotosleep/JASidePanels#example-2-storyboards

-(void)awakeFromNib
{
  [self setLeftPanel:[self.storyboard instantiateViewControllerWithIdentifier:@"leftViewController"]];
  [self setCenterPanel:[self.storyboard instantiateViewControllerWithIdentifier:@"centerViewController"]];
  [self setLeftPanel:[self.storyboard instantiateViewControllerWithIdentifier:@"rightViewController"]];
}
Run Code Online (Sandbox Code Playgroud)

如果我在上面的代码到CenterViewController.m这是如在示例2 MySidePanelController.m作为同一加入,则该应用被应声象下面.

https://dl.dropboxusercontent.com/u/6655378/stack1.png

-(void)awakeFromNib
{
//  [self setLeftPanel:[self.storyboard instantiateViewControllerWithIdentifier:@"leftViewController"]];
//  [self setCenterPanel:[self.storyboard instantiateViewControllerWithIdentifier:@"centerViewController"]];
//  [self setLeftPanel:[self.storyboard instantiateViewControllerWithIdentifier:@"rightViewController"]];
}
Run Code Online (Sandbox Code Playgroud)

如果我像上面那样注释掉,应用程序的工作方式如下. 载荷大小://dl.dropboxusercontent.com/u/6655378/stack2.png

我是iOS的新手.你能告诉我有什么问题吗?

我的环境.

  • XCode:版本4.6.2
  • iOS SDK:6.1
  • 模拟器:iPhone 6.1

open-source objective-c storyboard ios

4
推荐指数
1
解决办法
2720
查看次数