2013-10-26 12 views
5

Tôi đang cố gắng để thay thế cho phảncố gắng thay thế phản loadnibnamed: chủ sở hữu

[NSBundle loadNibNamed:@"Subscriptions" owner:self]; 

với điều này để thay thế (chỉ điều tôi có thể tìm thấy đó là tương đương)

[[NSBundle mainBundle] loadNibNamed:@"Subscriptions" owner:self topLevelObjects:nil]; 

nhưng hộp thoại bật lên và biến mất ngay lập tức thay vì ở lại mở như nó đã làm với các cuộc gọi không được chấp nhận.

Mã này nằm trong bộ điều khiển chế độ xem như thế này.

- (id)init{ 
    self = [super init]; 
    if (self) { 
     //[NSBundle loadNibNamed:@"Subscriptions" owner:self]; 

     [[NSBundle mainBundle] loadNibNamed:@"Subscriptions" owner:self topLevelObjects:nil]; 
    } 
    return self; 

}

và tôi gọi nó từ appdelegate như thế này.

SubscriptionsViewController *subscriptionsViewController = [[SubscriptionsViewController alloc] init]; 
[subscriptionsViewController.window makeKeyAndOrderFront:self]; 

Tôi còn thiếu điều gì không? Nó có vẻ thẳng về phía tôi.

+0

Tôi cũng có cùng một vấn đề, bạn đã tìm thấy bất kỳ giải pháp – Retro

Trả lời

1

Hộp thoại xuất hiện và sau đó biến mất là dấu hiệu của bộ sưu tập đối tượng có thể - với tham chiếu mạnh mẽ đến hộp thoại, nó sẽ được thu thập và bị mất.

Cuộc gọi không còn được giữ lại quyền sở hữu đối tượng cấp cao nhất trong ngòi, cuộc gọi mới không.

Do đó thuộc tính của đối tượng chủ sở hữu tham chiếu đến đối tượng cấp cao nhất phải mạnh hoặc bạn cần giữ mảng đối tượng cấp cao nhất. Điều này trái ngược với khuyến nghị cũ, nơi những tính chất này yếu.

Thuộc tính tham chiếu đến các đối tượng không phải cấp cao nhất trong ngòi bút vẫn có thể yếu.

+0

vì vậy những gì có thể là giải pháp, tôi có ổ cắm là mạnh nhưng nó vẫn ẩn – Retro

+0

@Retro - Có vẻ như bạn có một khác nhau vấn đề, nếu bạn có một tham chiếu mạnh mẽ đối tượng sẽ không được thu thập. Đặt câu hỏi của riêng bạn, cung cấp chi tiết mã của bạn, những gì xảy ra và những gì bạn đã thử - sau đó ai đó có thể giúp bạn. – CRD

1

Tôi chỉ có một vấn đề tương tự khi sử dụng loadNibNamed: owner: topLevelObjects: và luôn luôn có một lỗi như

[__NSArrayM insertObject: atIndex:]: đối tượng không thể nil' chấm dứt với ngoại lệ còn tự do kiểu NSException hủy bỏ() gọi

Bởi vì các đối tượng cấp cao nhất của tôi không có.

Cuối cùng tôi đã phát hiện ra rằng tệp nib tôi đang tải có phiên bản Bộ dựng giao diện được đặt thành "Xcode 4.6". Khi tôi cài đặt nó lên 6.2, mọi thứ hoạt động tốt trở lại.

enter image description here

Các vấn đề liên quan