2

通常、私はプログラミング言語よりもはるかに経験豊富な人に行き、それを根底から掘り下げようとするのを嫌いますが、かなり長い間、これについて頭を悩ませてきました. 相変わらずの人気です

キャッチされていない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。理由: ' * - [__NSArrayMutable .. insertObject:atIndex:]: オブジェクトを nil にすることはできません

私は Xcode/Obj-C にまったく慣れていないため、理解が限られています。基本的に、私は Apple の 'Your Second iOS App' を変更して、すべてがどのように連携しているかをよりよく理解しようとしてきました。このアプリは、基本的に「BirdSighting」アプリの修正版です。私はこの素晴らしいサイトをチェックしましたが、特に私の答えに対する簡潔な答えは見つかりませんでした.

とにかく、例外ブレークポイントを追加しましたが、次の行にスローされています。

[self.masterNewEventList addObject:イベント];

底に向かって。

NewEventDataController.m

#import "NewEventDataController.h"
#import "NewEvent.h"

@interface NewEventDataController ()

- (void)initializeDefaultDataList;

@end

@implementation NewEventDataController

- (void)initializeDefaultDataList
{
    NSMutableArray *eventList = [[NSMutableArray alloc] init];

    self.masterNewEventList = eventList;

    NewEvent *event;

    NSDate *today = [NSDate date];

    event = [[NewEvent alloc] initWithName:@"Event" date:today];

    [self addNewEventWithEvent:event];
}

- (void)setMasterNewEventList:(NSMutableArray *)newList
{
    if (_masterNewEventList != newList)
        _masterNewEventList = [newList mutableCopy];
}

- (id)init
{
    if (self = [super init])
    {
        [self initializeDefaultDataList];

        return self;
    }

    return nil;
}

- (NSUInteger)countOfList
{
    return [self.masterNewEventList count];
}

- (NewEvent *)objectInListAtIndex:(NSUInteger)theIndex
{
    return [self.masterNewEventList objectAtIndex:theIndex];
}

- (void)addNewEventWithEvent:(NewEvent *)event
{
    [self.masterNewEventList addObject:event];
}

@end

私の NewEvent.m は次のとおりです。

#import "NewEvent.h"

@implementation NewEvent

-(id)initWithName:(NSString *)event date:(NSDate *)date
{
    self = [super init];

    if (self)
    {
        _event = event;

        _date = date;

        return self;

    }

    return nil;
}

@end

私の考えでは、初期イベントを追加しようとしているとき (スローする直前)、イベント自体が適切に初期化されていません。デバッグは次のとおりです。

event = (NewEvent *) 0x00000000

ご覧いただきありがとうございます。

main.m 

#import <UIKit/UIKit.h>

#import "ParentAppDelegate.h"

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

2 に答える 2

0

問題は init メソッドにあります。その中で self を返す必要があります。

 - (id)initWithName:(NSString *)event date:(NSDate *)date
    {
    self = [super init];

    if (self)
    {
        _event = event;
        _date = date; 
        return self;
    }

    return nil;
}
于 2013-08-06T06:03:52.990 に答える