Множество похожих вопросов, но не с решением, которое работает в моем случае.
Я пытаюсь написать простое приложение FlipSideApp. Всего два представления с одной кнопкой (flipBtn | flopBtn), чтобы представить другое представление наоборот.
flip
на первый взгляд работает нормально. flop
с другой стороны вызывает
unrecognized selector sent to instance 0x6c3adf0
.
Приложение вылетает после вызова [self dismissViewControllerAnimated:YES completion:nil];
в файле FlipSide.m (см. Код ниже). Где 0x6c3adf0
- текущий адрес self
, который в данном случае является экземпляром FlipSide : UIViewController
.
Так что я думаю, что нераспознанный селектор, упомянутый в сообщении об ошибке, является dismissViewControllerAnimated:completion
-методом.
При наборе кода Xcode CodeSense «рекомендует» этот метод.
Согласно справочнику UIViewController этот метод известен в iOS 5.0 SDK.
Моя цель развертывания - 5.0, устройство iPhone, базовый SDK iOS 5.0, стандарт архитектуры (arm7).
С символической точкой останова, установленной для всех исключений, отладчик останавливается на UIApplicationMain в основной функции. Что ничего, что подсказывает мне.
Зомби-объекты включены. Даже когда я думаю, что утечки памяти здесь не проблема.
Что я могу сделать, чтобы селектор был распознан?
Файл: " AppDelegate.m "
#import "FirstViewController.h"
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[[UIWindow alloc]
initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch.
UIViewController *viewController1 = [[[FirstViewController alloc]
initWithNibName:@"FirstViewController" bundle:nil] autorelease];
self.window.rootViewController = viewController1;
[self.window makeKeyAndVisible];
return YES;
}
Файл: " FirstViewController.h "
@interface FirstViewController : UIViewController
- (IBAction)flipBtn:(id)sender;
@end
Файл: " FirstViewController.m "
…
- (IBAction)flipBtn:(id)sender {
NSLog(@"%s -- reached --", __PRETTY_FUNCTION__);
FlipSide* flipSide = [[FlipSide alloc] initWithNibName:@"FLipSide" bundle:nil];
[self presentViewController:flipSide animated:YES completion:nil];
NSLog(@"%s -- done --", __PRETTY_FUNCTION__);
}
Файл: " FlipSide.h "
@interface FlipSide : UIViewController
- (IBAction)flopBtn:(id)sender;
@end
Файл: " FlipSide.m "
#import "FlipSide.h"
- (IBAction)flopBtn:(id)sender {
NSLog(@"%s -- reached --", __PRETTY_FUNCTION__);
NSLog(@"self address is: %@", self);
// // // ??? unrecognized selector sent to instance ???
[self dismissViewControllerAnimated:YES completion:nil]; // <--
NSLog(@"%s -- done --", __PRETTY_FUNCTION__);
}
Консоль Выход составляет:
-[FirstViewController flipBtn:] -- reached --
-[FirstViewController flipBtn:] -- done --
-[FLipSide flopBtn:] -- reached --
self address is: <FLipSide 0x6c3adf0>
-[FLipSide flopBtn:] -- done --
-[FLipSide flopBtn:]: unrecognized selector sent to instance 0x6c3adf0