Тип возвращаемого значения метода не согласован

С удивлением я могу сказать, что это может быть достигнуто, и я просто это сделал.

Этот метод поддерживает все возможности:

  • Экран заблокирован пользователем; / g0]
  • нажата кнопка Home,
  • Переключиться на другое приложение.

Пока у вас есть экземпляр AVPlayer, работающий под управлением iOS, предотвращает автоматическую блокировку устройство.

Сначала вам нужно настроить приложение для поддержки звукового фона из файла Info.plist, добавляя в массив UIBackgroundModes элемент audio.

Затем введите ваш appDelegate.m в - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions:

эти методы

[[AVAudioSession sharedInstance] setDelegate: self];    
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];

и #import <AVFoundation/AVFoundation.h>

Затем в вашем представлении контроллер, который управляет AVPlayer

-(void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    [self becomeFirstResponder];
}

и

- (void)viewWillDisappear:(BOOL)animated
{
    [mPlayer pause];    
    [super viewWillDisappear:animated];
    [[UIApplication sharedApplication] endReceivingRemoteControlEvents];
    [self resignFirstResponder];
}

, затем ответьте на

- (void)remoteControlReceivedWithEvent:(UIEvent *)event {
    switch (event.subtype) {
        case UIEventSubtypeRemoteControlTogglePlayPause:
            if([mPlayer rate] == 0){
                [mPlayer play];
            } else {
                [mPlayer pause];
            }
            break;
        case UIEventSubtypeRemoteControlPlay:
            [mPlayer play];
            break;
        case UIEventSubtypeRemoteControlPause:
            [mPlayer pause];
            break;
        default:
            break;
    }
}

. Другой прием необходим для возобновления воспроизведения, если пользователь нажимает кнопку «домой» (в в этом случае воспроизведение приостанавливается с исчезновением).

Когда вы управляете воспроизведением видео (у меня есть методы play: и pause:), установите

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidEnterBackground:) name:UIApplicationDidEnterBackgroundNotification object:nil];

и

[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidEnterBackgroundNotification object:nil];
[g 16] и соответствующий метод, который будет запускать таймер и возобновить воспроизведение.

- (void)applicationDidEnterBackground:(NSNotification *)notification
{
    [mPlayer performSelector:@selector(play) withObject:nil afterDelay:0.01];
}
0
задан user42493 7 March 2019 в 15:30
поделиться

1 ответ

Проблема связана с тем, что тип возвращаемого значения helper является list of substitution, и некоторые из ваших совпадений не возвращают этот тип, а вместо этого тип блока. Поэтому компилятор указывает на эту ошибку.

Теперь, один из способов исправить это - вызвать исключение в этой точке.

 exception NotUnifiable;;

И заменить все строки, аналогичные:

    | TypInt, Arrow (a,b) -> print_string "Not Unifyable" 

На:

    | TypInt, Arrow (a,b) -> raise NotUnifiable

И использование унификации:

    try 
       unify ...the arguments...
    with NotUnifiable -> print "Not unifiable"

Но делать это может быть не тем, чего вы действительно хотите: как только возникает исключение, вы прекращаете все.

0
ответ дан Pierre G. 7 March 2019 в 15:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: