首先,我想提前道歉,因爲不知道這一點。在這種情況下,我一直試圖解決處理內存管理問題的最佳方式。釋放NSFileManager,如果它永遠不會到達發佈消息
我有一個簡短的方法來確定文件是否應該添加到列表中。其中一個檢查需要實例化NSFileManager。因爲一些檢查可能需要很長時間,所以我想在我的任何條件失敗後立即跳出來。但是,如果我早點返回,我的NSFileManager實例永遠不會收到它的發佈消息。
我想過使用AutoReleasePool,但是因爲添加到autoreleasepools的對象在當前運行循環結束時纔會被釋放,並且我的程序每次運行循環都會查看數千個文件,所以我不喜歡讓它們離開它們全部分配到循環結束。
如何確保我的NSFileManager的每個實例都能正確釋放。任何建議感激。
謝謝!
- (BOOL) fileShouldBeAdded:(NSString *)filePath { BOOL fileShouldBeAdded = TRUE; NSFileManager *fileManager = [[NSFileManager alloc] init]; if ([[filePath lastPathComponent] containsString:@"test.txt"]) { fileShouldBeAdded = FALSE; return fileShouldBeAdded; } if (![fileManager xAttrFileAtPathShouldBeAdded:filePath]) { fileShouldBeAdded = FALSE; return fileShouldBeAdded; } if ([[BackupManager sharedInstance] isExcludedByUser:filePath]) { fileShouldBeAdded = FALSE; return fileShouldBeAdded; } if (![fileManager backupRequiredForPath:filePath]) { fileShouldBeAdded = FALSE; return fileShouldBeAdded; } [fileManager release]; return fileShouldBeAdded; }
無論如何,您將FileManager的實例始終保留在內存中,因此無論您是否使用自動釋放實例,都沒有區別。 autoreleased實例真的是你想要的。 – 2010-12-17 14:43:12