2014-07-01 4 views
0

NSException 오류가 발생합니다. 주변을 둘러 보았지만 방법을 호출하는 방법이 될 수 있지만 문제를 해결할 수는 없습니다. 초보자이므로 좋은 설명을 매우 좋습니다. 여기 NSException 오류 받기

여기

#import "AddListingViewController.h" 

@interface AddListingViewController() 
@property (weak, nonatomic) IBOutlet UITextField *title; 
@property (weak, nonatomic) IBOutlet UITextView *desc; 
@property (weak, nonatomic) IBOutlet UITextField *price; 

@end 

@implementation AddListingViewController 


@synthesize manager = _manager; 
@synthesize add = _add; 

- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 
    self.manager = [[ListingTableViewController alloc] init]; 
    self.add = [[ListingManager alloc] init]; 
} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

    //cancel posting on tap 
- (IBAction)cancelListing:(UIBarButtonItem *)sender { 
    NSLog(@"cancel tapped thpugh"); 
    [self dismissViewControllerAnimated:YES completion:nil]; 

} 

    //add item on tap 
- (IBAction)addListing:(UIBarButtonItem *)sender { 
    NSLog(@"Add button tapped"); 

    self.add.listingTitle = self.title.text; 
    self.add.listingDescription = self.desc.text; 
    self.add.listingPrice = self.price.text; 

    [self.manager.listings addObject:self.add]; 

    [self dismissViewControllerAnimated:YES completion:nil]; 

} 

@end 

내 AddListingViewController.m이 내 AddListingViewController.h

#import <UIKit/UIKit.h> 
#import "ListingTableViewController.h" 
#import "ListingManager.h" 

@interface AddListingViewController : UIViewController 
@property (nonatomic) ListingTableViewController *manager; 
@property (nonatomic) ListingManager *add; 

@end 

입니다 나는 점점 오전 오류가 (나는 그것이 명확하게 여기지만 그렇지라고 확신 문제를 해결하는 방법을 알아야 함)

2014-06-30 21:37:44.825 Wildcat Exchange[1981:180450] Add button tapped 
2014-06-30 21:37:44.827 Wildcat Exchange[1981:180450] -[UITextInputTraits text]: unrecognized selector sent to instance 0xc193e90 
2014-06-30 21:37:44.831 Wildcat Exchange[1981:180450] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITextInputTraits text]: unrecognized selector sent to instance 0xc193e90' 
+0

객관적인 예외 예외 점을 추가하고 예외를 유발하는 코드 행을 확인하십시오. 가장 좋은 추측은 XIB 파일에 잘못된 연결이있는 것입니다. – bbum

답변

0

먼저 예외가 있습니다. 예외는 NSInvalidArgumentException이며, 호출하려고 한 객체에없는 함수 또는 메소드를 호출하려고 한 경우가 많으며, 잘못된 매개 변수가 함수에 전달 된 경우 일 수 있습니다.

예를 들어 문자열을 가져 와서 정수로 변환하는 함수를 작성한다고 가정 해 보겠습니다. NSString이 이미 이것을 제공한다는 사실을 무시하십시오. 변환 할 수없는 문자열을 누군가가 전달하면 "hello world"문자열이 전달됩니다. 함수가 아무 것도 할 수 없다고 판단하여 InvalidArgementException을 throw 할 가능성이 있습니다 (이 경우는 Cocoa 세계에서는 좀처럼 발생하지 않으며 예외가 throw되는 대신 nil이 반환되는 경우가 가장 많습니다).

그러나이 경우 이전이었고 "- [UITextInputTraits text] : 인스턴스 0xc193e90으로 보낸 인식 할 수없는 선택기"라는 오류가 계속 발생합니다. "인스턴스로 보낸 인식 할 수없는 선택기"부분은 NSInvalidArgumentException이 메모리 주소 0xc193e90에 저장된 일부 개체에 대해 메서드 (또는 선택기라고도 함)를 호출하려고했음을 의미한다고 생각하는 내용을 확인하는 것을 의미합니다. 그 주소에 어떤 종류의 물건이 있고 어떤 방법으로 전화를 했습니까? 그건 - [UITextInputTraits text] : 부분적으로, 당신은 UITextInputTraits 타입의 객체를 가지고 있고 거기에 'text'메소드를 호출하려고했습니다.

다음 단계는 충돌이 발생한 위치를 찾는 것입니다. 이렇게하려면 전역 예외 중단 점을 설정해야합니다 (확실하지는 않지만 "다음 단추에 탭 추가"를 기록한 직후 충돌이 발생했음을 감안할 때). 죽은 말을 때리지 않을 것입니다. beforeApple에 의해 설명되었습니다.

예외 중단 점 설정이 끝나면 Xcode는 예외를 발생시킨 행에서 앱을 중지합니다.이 시점에서 일부 디버거 명령을 사용하거나 예를 들어 addListing 함수의 세 번째 행에서 중단되면 클래스의 종류를 알면 유용 할 수 있습니다. lldb 콘솔 프롬프트에서 시도 할 수도 있습니다.

po self.title 

or 

po [self.title class] 

UITextfield 또는 UITextView가 아닌 ​​경우 XIB 파일의 스토리 보드에 뭔가 잘못 연결되어있을 수 있습니다.이 경우 인터페이스 작성기에서 연결 관리자를 확인해야합니다.

행운을 빌어 요.

+0

고마워, 그뿐만 아니라 내 질문에 대답뿐만 아니라 이런 문제를 해결하는 방법을 보여줍니다. 문제는 실제로. 텍스트 끝에있었습니다. NSString 속성을 만들어 각각에 대해 self.aLabel.text에 할당했습니다. –

-1

선택자 이름 텍스트 :(콜론 포함). 끝 부분에 콜론을 추가하고 작동하는지 확인하십시오.

+0

나는 그 부분을 올바르게하고 있다고 생각한다.그게 어떻게 해결되었는지보고 싶다면 위의 내 의견을 참조하십시오. –