首页 > 解决方案 > 分配给自定义 init 方法中的属性

问题描述

我正在尝试init为我的UIViewController. 这是方法本身:

- (instancetype)initWithBottomViewController:(UIViewController *)bottomViewController andTopViewController:(UIViewController *)topViewController {
    self = [super init];
    if (self) {
        self.bottomViewController = bottomViewController;
        self.topViewController = topViewController;
    }

    return self;
}

- (void)setupBottomViewController {
    /*crashes here because self.bottomViewController appears to be nil*/
    [self addChildViewController:self.bottomViewController];
    [self.bottomViewController.view setFrame:self.view.bounds];
    [self.view addSubview:self.bottomViewController.view];
    [self.bottomViewController didMoveToParentViewController:self];
}

控制台说-[__NSArrayM insertObject:AtIndex:] object cannot be nil

我调用我的init函数AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    BottomViewController *bottomVC = [[BottomViewController alloc] initWithNibName:@"BottomViewController" bundle:nil];
    TopViewController *topVC = [[TopViewController alloc] initWithNibName:@"TopViewController" bundle:nil];
    SlideMenuController *slideController = [[SlideMenuController alloc] initWithBottomViewController:bottomVC andTopViewController:topVC];
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
    self.window.rootViewController = slideController;
    [self.window makeKeyAndVisible];

    return YES;
}

属性self.bottomViewControllerself.topViewController.h文件中声明:

@property (strong, nonatomic) UIViewController *bottomViewController;
@property (strong, nonatomic) UIViewController *topViewController;

问题在于 和 的self.bottomViewController分配self.topViewControllerbottomViewControllertopViewController不是nil,但是self.bottomViewControllerself.topViewController是。我无法自己弄清楚。提前致谢!

标签: iosobjective-c

解决方案


问题是我为self.bottomViewController和实现了空的setter方法self.topViewController


推荐阅读