我一直在處理這段代碼幾天,試圖確定一些內存泄漏的原因。在「for循環」之後,幾乎每一行都在泄漏性能工具中產生內存泄漏百分比。從多維數組內存泄漏:NSMutableArray,NSArray,addObject和insertObjectAtIndex
我一直在嘗試各種排列,以使其工作。
這是我現在運行的嘗試,並得到它的底部代碼:
-(void)populateArrays
{
NSArray *arrTempSorted;
[arrContacts removeAllObjects];
[arrZzoneContacts removeAllObjects];
[arrNormalContacts removeAllObjects];
for(int i = 0 ; i < 200 ; i++)
{
[arrZzoneContacts addObject:[[[NSArray alloc] initWithObjects: [NSNumber numberWithInt:1], @"Composite Name", @"YES", @"first name", @"last name", @"first", nil] autorelease]];
[arrNormalContacts insertObject:[[[NSArray alloc] initWithObjects: [NSNumber numberWithInt:1], @"Composite Name", @"YES", @"first name", @"last name", @"first", nil] autorelease] atIndex:[arrNormalContacts count]];
[arrContacts addObject:[[[NSArray alloc] initWithObjects: [NSNumber numberWithInt:1], @"Composite Name", @"YES", @"first name", @"last name", @"first", nil] autorelease]];
}
arrTempSorted = [arrContacts sortedArrayUsingFunction:order context:NULL];
arrContacts = [arrTempSorted mutableCopy];
arrTempSorted = [arrZzoneContacts sortedArrayUsingFunction:order context:NULL];
arrZzoneContacts = [arrTempSorted mutableCopy];
arrTempSorted = [arrNormalContacts sortedArrayUsingFunction:order context:NULL];
arrNormalContacts = [arrTempSorted mutableCopy];
//[arrTempSorted release];
}
陣列和功能都在appDelegate.h文件。該陣列進行初始化像這樣:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//Global variables
arrContacts = [[NSMutableArray alloc] init];
arrZzoneContacts = [[NSMutableArray alloc] init];
arrNormalContacts = [[NSMutableArray alloc] init];
// Override point for customization after application launch.
[window addSubview:tabBarController.view];
[self.window makeKeyAndVisible];
return YES;
}
我試過在聲明的didFinishLaunchingWithOptions數組然後將其分配給arrContacts(例如),然後釋放它的方法,但我得到的「壞訪問」錯誤,當我們進入populateArrays方法。
任何有識之士將不勝感激,並請讓我知道如果我能在你的第二個代碼摘錄提供更多的細節
Hi-非常感謝您的及時和翔實的迴應!我目前遇到了泄漏儀器崩潰我的應用程序的問題,所以目前我無法確認成功或失敗。我第一次嘗試實施這些解決方案時遇到了一些錯誤訪問錯誤。當我解決了這些問題並讓你知道我的結果是什麼時,我會回信。 – Mark 2011-03-07 22:49:52
後續操作:我使用NSMutableArray的sortUsingFunction:context方法成功解決了泄漏問題。再次感謝你的幫助!!不良訪問是由於一個釋放被稱爲下行線,這是不必要的,一旦我修好了泄漏。 – Mark 2011-03-14 18:02:46