- [WelcomeUI _setViewDelegate:]: непризнанный селектор, отправленный в экземпляр 0xc061110

Вот ошибка:

2013-09-30 17:59:23.212 The Solver[422:a0b] -[WelcomeUI _setViewDelegate:]: unrecognized selector sent to instance 0xc061110
2013-09-30 17:59:23.222 The Solver[422:a0b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[WelcomeUI _setViewDelegate:]: unrecognized selector sent to instance 0xc061110'
*** First throw call stack:
(
    0   CoreFoundation                      0x023605e4 __exceptionPreprocess + 180
    1   libobjc.A.dylib                     0x014be8b6 objc_exception_throw + 44
    2   CoreFoundation                      0x023fd903 -[NSObject(NSObject) doesNotRecognizeSelector:] + 275
    3   CoreFoundation                      0x0235090b ___forwarding___ + 1019
    4   CoreFoundation                      0x023504ee _CF_forwarding_prep_0 + 14
    5   UIKit                               0x0013d55c +[UIViewController setViewController:forView:] + 40
    6   UIKit                               0x00137fb1 -[UIViewController setView:] + 511
    7   Foundation                          0x00edef68 _NSSetUsingKeyValueSetter + 133
    8   Foundation                          0x00ede493 -[NSObject(NSKeyValueCoding) setValue:forKey:] + 267
    9   Foundation                          0x00f4094a -[NSObject(NSKeyValueCoding) setValue:forKeyPath:] + 412
    10  UIKit                               0x002c5cd5 -[UIRuntimeOutletConnection connect] + 106
    11  libobjc.A.dylib                     0x014d07d2 -[NSObject performSelector:] + 62
    12  CoreFoundation                      0x0235bb6a -[NSArray makeObjectsPerformSelector:] + 314
    13  UIKit                               0x002c482e -[UINib instantiateWithOwner:options:] + 1417
    14  UIKit                               0x00136c95 -[UIViewController _loadViewFromNibNamed:bundle:] + 280
    15  UIKit                               0x0013743d -[UIViewController loadView] + 302
    16  UIKit                               0x0013773e -[UIViewController loadViewIfRequired] + 78
    17  UIKit                               0x00137c44 -[UIViewController view] + 35
    18  UIKit                               0x000605ad -[UIWindow addRootViewControllerViewIfPossible] + 66
    19  UIKit                               0x00060947 -[UIWindow _setHidden:forced:] + 312
    20  UIKit                               0x00060bdd -[UIWindow _orderFrontWithoutMakingKey] + 49
    21  UIKit                               0x0006b44a -[UIWindow makeKeyAndVisible] + 65
    22  UIKit                               0x0001e8e0 -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 1851
    23  UIKit                               0x00022fb8 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 824
    24  UIKit                               0x0003742c -[UIApplication handleEvent:withNewEvent:] + 3447
    25  UIKit                               0x00037999 -[UIApplication sendEvent:] + 85
    26  UIKit                               0x00024c35 _UIApplicationHandleEvent + 736
    27  GraphicsServices                    0x022be2eb _PurpleEventCallback + 776
    28  GraphicsServices                    0x022bddf6 PurpleEventCallback + 46
    29  CoreFoundation                      0x022dbdd5 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 53
    30  CoreFoundation                      0x022dbb0b __CFRunLoopDoSource1 + 523
    31  CoreFoundation                      0x023067ec __CFRunLoopRun + 2156
    32  CoreFoundation                      0x02305b33 CFRunLoopRunSpecific + 467
    33  CoreFoundation                      0x0230594b CFRunLoopRunInMode + 123
    34  UIKit                               0x000226ed -[UIApplication _run] + 840
    35  UIKit                               0x0002494b UIApplicationMain + 1225
    36  The Solver                          0x0000274d main + 141
    37  libdyld.dylib                       0x059a4725 start + 0
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb) 

Вот код:

#import <UIKit/UIKit.h>

#import "AppDelegate.h"

int main(int argc, char *argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}

Вот что помечено:

return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

Пожалуйста, объясните, что я делаю неправильно.

Ответы

Ответ 1

Как мы обсуждали в комментариях, проблема связана с вашей конфигурацией NIB. В корневом представлении для вашего контроллера просмотров используется пользовательский класс WelcomeUI, который не является подклассом UIView. При попытке установить его представление контроллер представления загрузил NIB, который успешно инициализировал экземпляр WelcomeUI, но разбился, когда он попытался выполнить селектор _setViewDelegate:, поскольку он не является видом.

Чтобы устранить эту проблему, вам просто нужно войти в Interface Builder, разверните контроллер просмотра, чтобы выбрать представление (возможно, отображаемое как "WelcomeUI" на боковой панели), откройте инспектор идентификации и удалите пользовательский класс.

View of the above code in Xcode

Поскольку вы хотели установить пользовательский класс своего контроллера представлений, вы можете выбрать сам контроллер представления на левой боковой панели и установить его собственный класс в "WelcomeUI".