- [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".