我无法解决这个NSInvalidArgumentException

时间:2015-04-13 01:34:59

标签: ios exception viewdidload

这是我的代码:

@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

此UI仅制作故事板。

这个故事板在iPhone 5中播放,但我的iPhone 6 Plus不能。

  

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

     

将app终止为未捕获的异常

     

' NSInvalidArgumentException',原因:' *** - [__ NSPlaceholderArray initWithObjects:count:]:尝试从对象插入nil对象[0]'

我不知道该怎么做。

发生此父类按钮事件后,发生presentViewController事件并更改页面。

iPhone 5正常运行但iPhone 6 plus失败。

我认为这TabRegsViewController viewDidLoad没问题,但是例外。

我不知道如何清除此异常。

请帮帮我。

编辑:

这个Class Call方法,这个vc指针和self是nil。为什么呢?..

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

1 个答案:

答案 0 :(得分:1)

似乎nibNameOrNil为nil,在下面的行中添加一个断点。并告诉我们你得到了什么。

- (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]'
调用某些方法时通常会发生

,但缺少某些参数。

你提到

  

这个Class Call方法,这个vc指针和self是nil。为什么呢?..

你在哪个位置添加断点并发现自己是零? 我需要更多代码来追踪错误||