Как запустить поток, только если он еще не запущен Objective C - PullRequest
0 голосов
/ 18 декабря 2018

Итак, у меня есть этот метод, который запускается при загрузке рассматриваемого контроллера представления.Однако, если поток, в котором он запущен, запускается более 3 раз, приложение завершает работу.Мне нужно убедиться, что в потоке одновременно работает только один экземпляр метода, как мне это сделать, насколько я знаю, у этого способа выполнения потока нет имени объекта потока, с которым можно было бы проверить.

- (void)observeNowPlaying{
    [self performSelectorInBackground:@selector(changeSongValues) withObject:nil]; //run the song checker in the background
}

-(void)changeSongValues{

    while(threadX != 1){
        MPMediaItem *tempItem = musicController1.nowPlayingItem; //set up now playing
        checkingSong = tempItem.title;
        NSString *artist = tempItem.artist;

        checkingSong = [[NSString alloc]initWithFormat:@"%@ - %@",(artist.length>0 ? artist : @"Unknown"),(checkingSong.length>0 ? checkingSong : @"Unknown")];
        _SongPlaying.text = checkingSong; //this changes the currently playing song and stuff

        usleep(5);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...