2011-03-01 46 views
0
(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  


    [self.window addSubview:rootController.view]; 
    [self.window makeKeyAndVisible]; 



    [[controlfile alloc]scedule1]; 
    return YES; 
} 

我上分配對象的潛在泄漏[控制文件頁頭] scedule1]當我建立&分析當我建立和分析,我得到了潛在的泄漏就在這一點上

+0

你可以請更具體,讓人們不必猜測你在問什麼? – jmort253 2011-03-01 05:28:57

+0

我會說你在泄漏:'[[controlfile alloc] scedule1];''你已經分配了'controlfile'在哪裏釋放分配的內存?提供更多的代碼,並針對您的問題更具體 – vfn 2011-03-01 05:37:04

回答

7
[[controlfile alloc]scedule1]; 

這是分配類controlfile的實例,然後在分配的對象上調用scedule1。 (請注意,它尚未初始化;您應先通過調用init來初始化它)。然後,該對象(您分配的)不會再次被引用。因此,你已經泄露了它。

你真的需要做這樣的事情:

id controlfile = [[ControlFile alloc] init]; 
[controlfile scedule1]; 
[controlfile release]; 

這假定ControlFile是一類。如果它是一個實例變量(由全小寫字母和缺乏聲明在你的代碼所示),然後你想這樣的:

controlfile = [[WhateverTheDeclaredClassOfControlFileIs alloc] init]; 
[controlfile scedule1]; 

// In the -dealloc method, call this: 
[controlfile release]; 

每次調用alloc,則必須調用要麼releaseautorelease當你用物體完成。你在這裏沒有這樣做,所以你已經泄漏了這個物體。

+0

偷走我口中的話。沒錯,所有這些都是。我會說完全一樣的。不可思議,不是嗎?嘿嘿。 +1 – Omar 2011-03-01 05:39:19