При нажатии кнопки приложение убивает процесс

#iphone #xcode #macos #uiviewcontroller #unrecognized-selector

#iPhone #xcode #macos #uiviewcontroller #нераспознанный селектор

Вопрос:

По сути, я создал приложение для звуковой панели из другого приложения. Однако я продолжаю получать ту же ошибку, и я не могу понять, что не так. Я совсем новичок в xcode и искал помощь по всему Интернету. Я опубликую всю информацию, которая может потребоваться, и, надеюсь, смогу заставить это работать.

## Отчет об ошибке ##

 2011-04-27 00:37:01.437 SoundBoard[11613:207] -[HBFSViewController pushBetter]: unrecognized selector sent to instance 0x693ccb0
2011-04-27 00:37:01.440 SoundBoard[11613:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[HBFSViewController pushBetter]: unrecognized selector sent to instance 0x693ccb0'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x02553b99 __exceptionPreprocess   185
    1   libobjc.A.dylib                     0x026a340e objc_exception_throw   47
    2   CoreFoundation                      0x025556ab -[NSObject(NSObject) doesNotRecognizeSelector:]   187
    3   CoreFoundation                      0x024c52b6 ___forwarding___   966
    4   CoreFoundation                      0x024c4e72 _CF_forwarding_prep_0   50
    5   UIKit                               0x002b27f8 -[UIApplication sendAction:to:from:forEvent:]   119
    6   UIKit                               0x0033dde0 -[UIControl sendAction:to:forEvent:]   67
    7   UIKit                               0x00340262 -[UIControl(Internal) _sendActionsForEvents:withEvent:]   527
    8   UIKit                               0x0033ee0f -[UIControl touchesEnded:withEvent:]   458
    9   UIKit                               0x002d63d0 -[UIWindow _sendTouchesForEvent:]   567
    10  UIKit                               0x002b7cb4 -[UIApplication sendEvent:]   447
    11  UIKit                               0x002bc9bf _UIApplicationHandleEvent   7672
    12  GraphicsServices                    0x02e33822 PurpleEventCallback   1550
    13  CoreFoundation                      0x02534ff4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__   52
    14  CoreFoundation                      0x02495807 __CFRunLoopDoSource1   215
    15  CoreFoundation                      0x02492a93 __CFRunLoopRun   979
    16  CoreFoundation                      0x02492350 CFRunLoopRunSpecific   208
    17  CoreFoundation                      0x02492271 CFRunLoopRunInMode   97
    18  GraphicsServices                    0x02e3200c GSEventRunModal   217
    19  GraphicsServices                    0x02e320d1 GSEventRun   115
    20  UIKit                               0x002c0af2 UIApplicationMain   1160
    21  SoundBoard                          0x00001b30 main   102
    22  SoundBoard                          0x00001ac1 start   53
)
terminate called after throwing an instance of 'NSException'
## HBFS VIEW CONTROLLER .M ##

import "HBFSViewController.h"
import <AVFoundation/AVAudioPlayer.h>

@implementation HBFSViewController

- (IBAction)pushAbout {

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"About" message:@"The Mr Dolan Soundboard : Created by Charlie Gilbertson" delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil];
    [alert show];
    [alert release];

}

- (IBAction)pushAnd {

    NSString *path = [[NSBundle mainBundle] pathForResource:@"And" ofType:@"aif"];
    AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
    theAudio.delegate = self;
    [theAudio play];    

}

- (IBAction)pushLad {

    NSString *path = [[NSBundle mainBundle] pathForResource:@"Lad" ofType:@"aif"];
    AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
    theAudio.delegate = self;
    [theAudio play];

}

- (IBAction)pushNoLegs {

    NSString *path = [[NSBundle mainBundle] pathForResource:@"No legs" ofType:@"aif"];
    AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
    theAudio.delegate = self;
    [theAudio play];

}

- (IBAction)pushMyDaughter {

    NSString *path = [[NSBundle mainBundle] pathForResource:@"My Daughter" ofType:@"aif"];
    AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
    theAudio.delegate = self;
    [theAudio play];

}

- (IBAction)pushLass {

    NSString *path = [[NSBundle mainBundle] pathForResource:@"Lass" ofType:@"aif"];
    AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
    theAudio.delegate = self;
    [theAudio play];

}

- (IBAction)pushYO {

    NSString *path = [[NSBundle mainBundle] pathForResource:@"YO" ofType:@"aif"];
    AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
    theAudio.delegate = self;
    [theAudio play];

}

- (IBAction)pushTape {

    NSString *path = [[NSBundle mainBundle] pathForResource:@"Tape" ofType:@"aif"];
    AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
    theAudio.delegate = self;
    [theAudio play];    

}

- (IBAction)pushMySon {

    NSString *path = [[NSBundle mainBundle] pathForResource:@"My Son" ofType:@"aif"];
    AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
    theAudio.delegate = self;
    [theAudio play];

}

- (IBAction)pushNoArms {

    NSString *path = [[NSBundle mainBundle] pathForResource:@"No arms" ofType:@"aif"];
    AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
    theAudio.delegate = self;
    [theAudio play];

}

- (IBAction)pushCanDo {

    NSString *path = [[NSBundle mainBundle] pathForResource:@"Can do better than you" ofType:@"aif"];
    AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
    theAudio.delegate = self;
    [theAudio play];

}

- (IBAction)pushOr {

    NSString *path = [[NSBundle mainBundle] pathForResource:@"Or" ofType:@"aif"];
    AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
    theAudio.delegate = self;
    [theAudio play];

}

- (IBAction)pushScotch {

    NSString *path = [[NSBundle mainBundle] pathForResource:@"Scotch" ofType:@"aif"];
    AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
    theAudio.delegate = self;
    [theAudio play];

}

- (IBAction)pushAndThey {

    NSString *path = [[NSBundle mainBundle] pathForResource:@"And they've got" ofType:@"aif"];
    AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
    theAudio.delegate = self;
    [theAudio play];

}

- (IBAction)pushEgg {

    NSString *path = [[NSBundle mainBundle] pathForResource:@"Egg" ofType:@"aif"];
    AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
    theAudio.delegate = self;
    [theAudio play];

}
@end


## HBFS VIEW CONTROLLER .H ##

import <UIKit/UIKit.h>
import <Foundation/Foundation.h>
import <AVFoundation/AVAudioPlayer.h>

@interface HBFSViewController :UIViewController <AVAudioPlayerDelegate> {
    IBOutlet UIBarButtonItem *aboutButton;
    IBOutlet UIToolbar *toolBar;
}
- (IBAction)pushAbout;
- (IBAction)pushAnd;
- (IBAction)pushLad;
- (IBAction)pushLass;
- (IBAction)pushOr;
- (IBAction)pushScotch;
- (IBAction)pushTape;
- (IBAction)pushYO;
- (IBAction)pushEgg;
- (IBAction)pushNoLegs;
- (IBAction)pushNoArms;
- (IBAction)pushMyDaughter;
- (IBAction)pushMySon;
- (IBAction)pushCanDo;
- (IBAction)pushAndThey;
@end
  

Ответ №1:

Видите это сообщение об ошибке?

 Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[HBFSViewController pushBetter]: unrecognized selector sent to instance 0x693ccb0
  

Теперь посмотрите на все IBAction методы, которые вы перечислили ( -pushAbout и т.д.).

Вы заметите, что -pushBetter среди них нет.

Вам нужно написать -pushBetter метод и подключить его к UIButton .

Ответ №2:

Похоже, вы каким-то образом отправляете вызов метода pushBetter на ваш контроллер просмотра, к которому он, по-видимому, не подготовлен (согласно вашему коду и ошибке):

 -[HBFSViewController pushBetter]: unrecognized selector sent to instance 0x693ccb0' 
  

Можете ли вы выполнить глобальный поиск по «pushBetter» и посмотреть, где он находится в вашем проекте??