IET另一編輯(增加奇怪) 編輯顯示相關部分的代碼NSMutableArray正在破壞我的生活!
嗨。有有一個NSMutableArray一個奇怪的問題,我只是不理解......
解釋:
我有一個NSMutableArray的,定義爲一個屬性(非原子,保留),合成,並與29個元素初始化。
realSectionNames = [[NSMutableArray alloc] initWithCapacity:29];
初始化後,我可以插入元素,因爲我希望和一切似乎工作正常。然而,當我運行應用程序時,如果我在數組中插入一個新元素,我可以在插入元素的函數中打印該數組,並且一切似乎都正常。
但是,當我在表中選擇一行並需要讀取該數組時,我的應用程序崩潰。事實上,它甚至無法打印陣列。
當使用像我這樣的初學者可能會丟失的NSMutableArray時,每個人都應該知道是否有任何「魔法和邏輯技巧」?
非常感謝。
我宣佈我的數組作爲
realSectionNames = [[NSMutableArray alloc] initWithCapacity:29];
我插在我的數組對象與
[realSectionNames addObject:[category categoryFirstLetter]];
雖然我知道我還可以
插入其中「我「是第一個非佔領的位置。
插入後,我重新加載我的tableView的數據。在重新加載數據之前或之後打印數組顯示它具有所需的信息。
之後,在表中選擇一行會導致應用程序崩潰。這個realSectionNames在幾個UITableViewDelegate函數中使用,但對於這種情況並不重要。真正重要的是,在didSelectRowAtIndexPath函數的開頭打印數組會崩潰所有內容(當然,不會打印任何內容)。我敢肯定,這是該行中,用於打印任何東西,他的作品前行(例如):
NSLog(@"Anything");
NSLog(@"%@", realSectionNames);
給出了輸出:
2010-03-24 15:16:04.146 myApplicationExperience [3527 :207]任何
[會話開始於2010-03-24 15點16分04秒+0000] GNU GDB 6.3.50-20050815(蘋果版GDB-967)(星期二7月14日02:11: 58 UTC 2009) 版權所有2004自由軟件基金會,Inc. GDB是免費軟件,由GNU Ge neral公共許可證,你是 歡迎在特定條件下更改和/或分發它的副本。 輸入「show copying」查看條件。 GDB絕對沒有保修。請輸入「顯示保修」以瞭解詳情。 這GDB被配置爲「I386的蘋果達爾文」 .sharedlibrary應用負載規則所有附加 處理3527
還沒了解什麼樣的愚蠢的我做了這個時候...也許這不是來不及追隨腦外科醫生的職業?
以下一個答案,我印刷
NSLog(@"self=%x", self);
NSLog(@"self=%@", self);
NSLog(@"realSectionNames=%x", realSectionNames);
給出每個功能完全相同的結果(從代表或沒有)。
NSLog(@"realSections = %@", realSectionNames);
版畫以及在我的viewWillAppear中,在didSelectRowAtIndexPath方法,和崩潰的viewForHeaderInSection。沒有穿線,順便......
所以,不知道該怎麼辦,我想「的事情」 ......我改self.realSectionNames realSectionNames的所有引用
在viewForHeaderInSection打印功能使以下問題:
2010-03-24 16:01:44.067 myApplication[4104:207] numberOfSectionsInTableView result -> 1
2010-03-24 16:01:44.068 myApplication[4104:207] viewForHeaderAtSection
2010-03-24 16:01:44.068 myApplication[4104:207] self=3d13470
2010-03-24 16:01:44.068 myApplication[4104:207] self=<RootViewController: 0x3d13470>
2010-03-24 16:01:44.069 myApplication[4104:207] self.realSectionNames=3b12830
2010-03-24 16:01:44.070 myApplication[4104:207] realSections = (
<__NSArrayReverseEnumerator: 0x3b50500>
)
2010-03-24 16:01:44.070 myApplication[4104:207] *** -[__NSArrayReverseEnumerator length]: unrecognized selector sent to instance 0x3b50500
2010-03-24 16:01:44.071 myApplication[4104:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayReverseEnumerator length]: unrecognized selector sent to instance 0x3b50500'
2010-03-24 16:01:44.072 myApplication[4104:207] Stack: (
31073371,
2572170505,
31455291,
31024758,
30877378,
276908,
26404,
3227182,
4544033,
4551926,
4550923,
3267462,
3207973,
3249408,
25927,
3222086,
3205252,
459178,
30857920,
30854216,
39163413,
39163610,
2949039
)
什麼是NSArrayReverseEnumerator?爲什麼它對我意味着?
任何機會看到崩潰的代碼?很難猜測問題是什麼...... – Vladimir 2010-03-24 14:37:50