我在我的程序中使用了一個NSXMLParser類,併爲其指派了一個委託。 但是,這個委託被setDelegate:方法保留,導致一個小問題,但令人討厭的:-)內存泄漏。NSXMLParser的委託和內存泄漏
我無法在setDelegate之後釋放委託類:因爲程序會崩潰。
這裏是我的代碼:
self.parserDelegate = [[ParserDelegate alloc] init]; //retainCount:1
self.xmlParser = [[NSXMLParser alloc] initWithData:self.xmlData];
[self.xmlParser setDelegate:self.parserDelegate]; //retainCount:2
[self.xmlParser parse];
[self.xmlParser release];
ParserDelegate是委託類。
當然,如果我將'self'設置爲委託,我將沒有任何問題,但我想知道是否有辦法將不同的類用作委託而不泄漏。
預先感謝您。
所以我不應該擔心,即使它顯示爲儀器泄漏? 此外,由於我得到'setDelegate:'方法(根據儀器)後的retainCount:2,計數何時變爲0? – 2010-05-05 22:04:04
這很奇怪,你得到第二個保留。如果您在上面的代碼中添加了該版本,或者添加了第二個版本以抵消2個保留計數,您會說它崩潰了嗎?如果是後者,這聽起來像是別的東西正在保留它。 – bobDevil 2010-05-06 05:31:47
第一個。如果我在[self.xmlParser發佈]之後立即釋放它,它會崩潰。它可能是儀器工具中的一些錯誤嗎?我似乎無法理解'setDelegate'如何保留代表... – 2010-05-06 09:04:23