ฉันไม่สามารถแก้ไข 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

UI นี้สร้างเฉพาะสตอรี่บอร์ดเท่านั้น

สตอรี่บอร์ดนี้เล่นได้ใน iPhone 5 แต่ iPhone 6 Plus ของฉันไม่สามารถเล่นได้

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

กำลังยุติแอปเพื่อรับข้อยกเว้นที่ไม่ถูกตรวจจับ

'NSInvalidArgumentException' เหตุผล: '*** - [__NSPlaceholderArray initWithObjects: count: ]: พยายามแทรกวัตถุไม่มีจากวัตถุ [0]'

ผมไม่ทราบว่าจะทำอย่างไร.

หลังจากเหตุการณ์ปุ่มคลาสพาเรนต์เกิดขึ้น เหตุการณ์ presentViewController จะเกิดขึ้นและเพจจะเปลี่ยนไป

iPhone 5 ใช้งานได้ แต่ iPhone 6 plus ล้มเหลว

ฉันคิดว่า TabRegsViewController viewDidLoad นี้ใช้ได้ แต่เป็นข้อยกเว้น

ฉันไม่รู้วิธีล้างข้อยกเว้นนี้

โปรดช่วยฉันด้วย

แก้ไข :

วิธีการ Class Call นี้ และตัวชี้ 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 = (ถ่านที่ไม่ได้ลงชื่อ ** ) 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 เรียก two.. ‹‹ปัญหา...? ตัวอย่างฉันต้องการไปที่ 3 แต่สตรอยบอร์ด 1->2->3 ดังนั้นเรียกปัจจุบัน Viewcontroller:2 และ 2 คลาส init เป็นปัจจุบัน ViewController:3 สิ่งนี้สามารถทำให้เกิดข้อผิดพลาดนี้ได้ ??   -  person Jeong Seok Yang    schedule 13.04.2015
comment
ฉันคิดว่าปัญหาโปรแกรม Xcode .. ? เพราะพอผมโหลด App ใน 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]'

มักจะเกิดขึ้นเมื่อคุณเรียกใช้เมธอดบางอย่างแต่พารามิเตอร์บางตัวหายไป

คุณกล่าวถึง

วิธีการ Class Call นี้ และตัวชี้ vc และ 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) หมายถึง... TabRegsViewController.h นี้มี @property (อ่านเขียน) 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
คุณพลาดจาก = 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