我有一個非常標準的設置,我在我的控制器中有一個數組,我綁定到NSTableView。當我用UI添加一個對象到這個數組時,我通過將數組複製到一個可變數組中添加元素,然後將其複製回來。我在某處看到了這個習語,但我不確定它在哪裏,或者這是否確實是一種理智的事情。我在Snow Leopard上工作得很好,但它在Leopard上非常糟糕。 GDB告訴我,它發生在標記行,我將新陣列複製回來。我正在更新綁定到NSTableView的NSArray嗎?
@interface MyAppDelegate : NSObject {
NSArray * urls;
//other declarations
}
@property (nonatomic, retain) NSArray *urls;
@implementation MyAppDelegate
@synthesize urls;
- (void)addThing:(id)sender {
NSMutableArray *newUrls = [NSMutableArray arrayWithArray: [self urls]];
[newUrls addObject: newurlimadding];
[self setUrls: [NSArray arrayWithArray: newUrl]];
}
我很確定我必須在這裏做些什麼。有一個更好的方法嗎?我爲什麼崩潰?
其實,我的tableview * does *只有一列,只顯示一個URL的路徑。我將該列綁定到NSURL對象中的路徑鍵。這個NSURL數組只是坐在我的控制器對象中,它可能屬於我的模型。如果我只想在一個表列中顯示路徑鍵,那麼將綁定直接指向NSURL數組有什麼問題嗎?它在10.6「有效」。 我知道可能有更好的方法添加到數組中。謝謝。我將通讀「模型對象實施指南」。 – oldpatricka
此外,我不知道我可以發佈關於崩潰的有用信息,因爲錯誤控制檯只是給了我樣板「gdb is starting」文本(http://pastie.org/784091)和調試器只是將我指向我導致崩潰的地方。 http://i.imgur.com/hxcwi.png – oldpatricka
查看調試器窗口中的幀號列。那至少有四位數字!你可能有一個遞歸問題。看起來更高一點,看看週期是什麼。 –