0

OK,所以我在這裏再次面臨可怕的message sent to deallocated instance ...調試「的消息發送到釋放實例」

  • 我使用DMTabBar(基本上是一個Xcode樣TabBar控件)
  • ARC是啓用

現在,這裏的交易:

  • 伴隨控制的示例工作正常
  • 我已經啓用殭屍(甚至嘗試使用儀器,調試雖然 - 說實話 - 我不知道要尋找什麼)
  • deallocated實例是tabBarItems TabBar數組(託管不同按鈕的數組)。

這是我添加的項目:

NSMutableArray* sidebarItems = [@[ 
     [DMTabBarItem tabBarItemWithIcon:[NSImage templateImageNamed:@"One" withSize:iconSize] tag:0 tooltip:@"Files"], 
     [DMTabBarItem tabBarItemWithIcon:[NSImage templateImageNamed:@"Two" withSize:iconSize] tag:1 tooltip:@"Explorer"], 
     [DMTabBarItem tabBarItemWithIcon:[NSImage templateImageNamed:@"Three" withSize:iconSize] tag:2 tooltip:@"Bookmarks"], 
     [DMTabBarItem tabBarItemWithIcon:[NSImage templateImageNamed:@"Four" withSize:iconSize] tag:3 tooltip:@"Search"] 
    ] mutableCopy]; 

[sidebarTabs setTabBarItems:items]; 

// Handle selection events 
[sidebarTabs handleTabBarItemSelection:^(DMTabBarItemSelectionType selectionType, DMTabBarItem *targetTabBarItem, NSUInteger targetTabBarItemIndex) { 
     if (selectionType == DMTabBarItemSelectionType_WillSelect) { 
      [sidebarTabView selectTabViewItem:[sidebarTabView.tabViewItems objectAtIndex:targetTabBarItemIndex]]; 
     } else if (selectionType == DMTabBarItemSelectionType_DidSelect) { 
     } 
    }]; 

這是不同的元素是如何宣稱:

@interface myAppl : NSWindowController 
{ 
    IBOutlet DMTabBar* sidebarTabs; 
    IBOutlet NSTabView* sidebarTabView; 
} 

這是DMTabBar的接口(最「重要」部分):

@interface DMTabBar : NSView { 

} 

// set an NSArray of DMTabBarItem elements to populate the DMTabBar 
@property (nonatomic,strong) NSArray*   tabBarItems; 

// change selected item by passing a DMTabBarItem object (ignored if selectedTabBarItem is not contained inside tabBarItems) 
@property (nonatomic,assign) DMTabBarItem*  selectedTabBarItem; 

能否請您給我解釋一下它是什麼,我做錯了嗎?我絕對不內存管理(是的,我承認我有些學做),但我絕對會殺了我自己在這一個大師...

我設置tabBarItems他們似乎在那裏(至少在起初)。他們爲什麼被釋放? (記住控制和項目代碼都使用ARC)。

任何想法? (請讓我知道如果你需要知道別的...)

+0

Ewwwww,伊娃IBOutlets!這是什麼,ObjC 1.0? – CodaFi 2013-02-26 06:51:50

+0

@CodaFi最初他們被宣佈爲屬性,但我非常絕望,我一直在嘗試每一個可能的組合...... – 2013-02-26 06:55:33

+0

有可能你可能有線程問題嗎? UIKit和線程絲毫不同意。 – CodaFi 2013-02-26 08:14:35

回答

1

您是否嘗試過與通常的內存調試技術運行,即

  • 儀器殭屍,和
  • 設置Xcode的編輯方案>診斷>內存管理選項卡中的各個標誌?
+0

1)我不知道如何使用儀器,2)如前所述,我已經確定了哪個特定對象正在發佈。所以? – 2013-02-26 06:58:28

0

僅當它不是對象,委託和IBoutlet時才使用賦值。

改變這一點:

@property (nonatomic,assign) DMTabBarItem*  selectedTabBarItem; 

這樣:

@property (nonatomic,strong) DMTabBarItem*  selectedTabBarItem; 
相關問題