Я не мог решить это исключение NSInvalidArgumentException

Вот мой код:

@interface TabRegsViewController ()
@end

@implementation TabRegsViewController

@synthesize parent;
@synthesize menu_select;

-(BOOL) shouldAutorotate {    
    return UIInterfaceOrientationMaskPortrait;
}

-(NSUInteger) supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskPortrait;
}

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

- (void)viewDidLoad {
    NSLog(@"***************\t\t\tTab_Reg_ViewDidLoad");
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)viewDidAppear:(BOOL)animated {
    //[super viewDidAppear:animated];
    NSLog(@"***************\t\t\tTab_Reg_ViewDidAppear");
}

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

@end

Этот пользовательский интерфейс делает только раскадровку.

Эта раскадровка воспроизводится на iPhone 5, но мой iPhone 6 Plus не может.

************* tab_reg_ViewDidload

завершение приложения до неперехваченного исключения

«NSInvalidArgumentException», причина: «*** -[__NSPlaceholderArray initWithObjects: count:]: попытка вставить нулевой объект из объектов [0]»

Я не знаю, что делать.

После того, как это событие кнопки родительского класса происходит, происходит событие presentViewController и страница изменяется.

iPhone 5 работает, а iPhone 6 plus не работает.

Я думаю, что это TabRegsViewController viewDidLoad нормально, но исключение.

Я не знаю, как очистить это исключение.

Помогите пожалуйста мне.

Редактировать :

Этот метод вызова класса, этот указатель vc и self равны нулю. Зачем?..

UIStoryboard *storyboard = [UIStroyboard storyboardWithName:"Main_Storyboard" bundle:nil];
TabRegsViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"TabRegsViewController"];
vc.parent = self;
[self presentViewController:vc animated:NO completion:nil];

и текущая точка исключения

#import <UIKit/UIKit.h>
#import "AppDelegate.h"

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

ошибка в потоке 1: сигнал SIGABRT argc (int) argv = (unsigned char **) NULL


person Jeong Seok Yang    schedule 13.04.2015    source источник
comment
Какая строка кода вызывает исключение? Ни один из опубликованных вами кодов не создает массив.   -  person rmaddy    schedule 13.04.2015
comment
И почему ваши методы viewDidLoad и viewDidAppear: не вызывают super?   -  person rmaddy    schedule 13.04.2015
comment
супер методы ничего не вызывают... только тест;;;   -  person Jeong Seok Yang    schedule 13.04.2015
comment
я не знаю исключение строки кода... этот класс - это только этот код... так что я не знаю, что...   -  person Jeong Seok Yang    schedule 13.04.2015
comment
Посмотрите на трассировку стека. Если вы не знаете, как отлаживать сбои, см. raywenderlich.com/10209/my-app-crashed-now-what-part-1   -  person rmaddy    schedule 13.04.2015
comment
Я думаю, что presentviewcontroller вызывает два.. ‹‹проблема…? Например, я хочу перейти на 3, но стройборд 1->2->3. так вызовите presentViewcontroller: 2 и класс 2 init присутствует в PresentViewController: 3, это может сделать эту ошибку ??   -  person Jeong Seok Yang    schedule 13.04.2015
comment
Я думаю, что проблема с программой Xcode ..? Потому что, когда я получаю приложение в Appstore, эта проблема решается...;;;   -  person Jeong Seok Yang    schedule 15.04.2015


Ответы (1)


Похоже, что nibNameOrNil равен нулю, добавьте точку останова в строку ниже. И расскажи нам, что ты получишь.

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
     //Add a breakpoint overhere or NSLog the value nibNameOrNil and nibBundleOrnil
     self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
    // Custom initialization
}
return self;
}

Последующий ответ: Хорошо, прочитав этот снимок экрана, я могу получить только приблизительное представление о вашей структуре. И код выглядит нормально. Из моего опыта, эта ошибка

'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderArray initWithObjects: count: ]: attempt to insert nil object from objects[0]'

обычно это происходит, когда вы вызываете какой-то метод, но какой-то параметр отсутствует.

Вы упоминаете

Этот метод вызова класса, этот указатель vc и self равны нулю. Зачем?..

вы добавляете точку останова в какой позиции и обнаруживаете, что self равно нулю?? мне нужно больше кода, чтобы отследить ошибку ||

person Pang Ho Ming    schedule 13.04.2015
comment
хорошо, я только что прочитал ваш отредактированный вопрос. в чем смысл строки vc.parent = self;. Я думаю, вы можете удалить эту строку. - person Pang Ho Ming; 13.04.2015
comment
если вы не возражаете, вы можете отправить мне эти файлы vc, и я могу помочь вам изучить их. - person Pang Ho Ming; 13.04.2015
comment
vc.parent означает vc(viewController).parent(pointer) = self(me) mean... Этот TabRegsViewController.h имеет @property (readwrite) WaitingViewController *parent; и WaitingViewController является родительским представлением. если вы из Кореи, пожалуйста, дайте мне свой адрес электронной почты .. Я очень-очень немного говорю по-английски ... - person Jeong Seok Yang; 13.04.2015
comment
[email protected] ... я из Гонконга .. я думаю, что ваш английский в порядке :D трудно понять вашу проблему только по тексту || - person Pang Ho Ming; 13.04.2015
comment
я отправляю электронное письмо .. с файлом jpeg (захват ..) - person Jeong Seok Yang; 13.04.2015
comment
вы пропустили From = 3; в методе onInitViewController? - person Pang Ho Ming; 13.04.2015
comment
и я думаю, ноль.. ноль.. очень важное ключевое слово.. но другое устройство (iphone5, ipad2) работает.. почему iphone6plus ..................... ................................................. ........................... - person Jeong Seok Yang; 13.04.2015
comment
viewDidLoad в TabRegsViewController.m работает.. но следующее приложение убивает..;; я не знаю, почему раскадровка viewController не рисует;;;... - person Jeong Seok Yang; 13.04.2015