2015-10-06 4 views
0

Я запустил этот код here, и он отлично работал. Однако у меня возникла проблема при попытке добавить его в мой проект. После класса YouTubeHelper вызова showAuthenticationViewController:iOS Аутентификация YouTube EXC_BAD_EXCEPTION

– (void)showAuthenticationViewController:(UIViewController *)authView { 
    [self.navigationController presentViewController:authView animated:NO completion:nil]; 
} 

Внутри GTMOAuth2ViewControllerTouch.m Я получаю exc_bad_access, внутри loadView, на [super loadView], как показано ниже:

– (void)loadView { 
    NSString *nibPath = nil; 
    NSBundle *nibBundle = [self nibBundle]; 
    if (nibBundle == nil) { 
     nibBundle = [NSBundle mainBundle]; 
    } 
    NSString *nibName = self.nibName; 
    if (nibName != nil) { 
     nibPath = [nibBundle pathForResource:nibName ofType:@”nib”]; 
    } 
    if (nibPath != nil && [[NSFileManager defaultManager] fileExistsAtPath:nibPath]) { 
     [super loadView]; <<<< exc_bad_access here! 
    } else { 
     // One of the requirements of loadView is that a valid view object is set to 
     // self.view upon completion. Otherwise, subclasses that attempt to 
     // access self.view after calling [super loadView] will enter an infinite 
     // loop due to the fact that UIViewController's -view accessor calls 
     // loadView when self.view is nil. 
     self.view = [[[UIView alloc] init] autorelease]; 

#if DEBUG 
     NSLog(@"missing %@.nib", nibName); 
#endif 
    } 
} 

Любая идея, почему это происходит и как это исправить?

Спасибо!

+0

Эта демонстрация имеет последнее обновление более года назад, поэтому я считаю, что API Google изменен, и это может сломать эту демонстрацию. Поэтому вам лучше провести исследование и обратиться к официальным документам, вместо того, чтобы пытаться понять код, который не поддерживается, и может быть покрыт множеством ошибок. – EridB

ответ

0

Благодаря Midhun и EridB.

Поскольку библиотеки немного стары, я сделал свою собственную реализацию для загрузки видео на YouTube.

Вот некоторые ссылки, которые помогли на нем:

https://developers.google.com/youtube/v3/guides/implementation/videos

https://developers.google.com/youtube/v3/guides/using_resumable_upload_protocol

Специально этот был очень полезным, чтобы попытаться проверить запрос/ответ:

https://developers.google.com/oauthplayground/?code=4/1c_ILMzPMhgPWpCI6L7M-LeBe5jL-BY1Xa1sS0oWQJ0

I надеюсь, что это поможет другим при реализации API YouTube.

0

Вы никогда не должны звонить [super loadView]; в свой подкласс. Удалите эту строку из своей реализации.

Вы можете переопределить этот метод, чтобы создать свои представления вручную. Если вы решите это сделать, присвойте корневому представлению вашего представления иерархию свойства view. Создаваемые вами представления должны быть уникальными экземплярами и не должны использоваться совместно с любым другим контроллером вида . Ваша пользовательская реализация этого метода не должна вызывать super.

Ссылка: UIViewController Class Reference

+0

Это не мой класс. Это из Google API GTMOAuth2ViewControllerTouch.m –

+0

@FabioBergmann: Хм, это интересно. Ну, я добавил ссылку API Apple для проверки. –

+0

Я запустил код по этой ссылке, используя тот же API Google, тот же класс, и он работает без проблем. Только когда я делаю то же самое с моим проектом, я получаю этот плохой доступ. –

Смежные вопросы