iOS应用内存使用问题

时间:2013-11-15 15:26:53

标签: ios iphone objective-c ipad storyboard

您好我的iPad应用中存在内存问题。每次我从视图更改为另一个视图(此转换是使用segues进行的)时,应用程序会增加使用的内存并且永远不会释放内存。它总是增加使用的内存。

让我们看一个例子:

我在第一个视图“home”中,在viewDidLoad和viewDidAppear中有这些行

(void)viewDidLoad
{
    [super viewDidLoad];

    self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]];
    [self initializeHomeDataSources];
    DateService* dateService = [[DateService alloc] init];
    self.currentDate = [dateService today];

    [self checkHomeStatus];
    [self showEmptyHomeViews];
    [self setUpFonts];
}

这个我的观点确实出现了方法

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];    
    _homeAutomaticUpdate = YES;
    //This is a Thread
    [NSThread detachNewThreadSelector:@selector(automaticHome) toTarget:self withObject:nil];
    [self.phrasesView startPhrasesThread];

    if ([InternetService internetConnection]) {
        [self synchronizeHome];
    }

    if (self.scheduleDataSource.currentEvent) {
        [self loadMessagesFor:self.homeDataSource.currentEvent];
        [self loadLibraryFor:self.homeDataSource.currentEvent];
    } else {
        [self loadLibrary];
    }
}

- (void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];
    _homeAutomaticUpdate = NO;
}

所有IBOutlet都被定义为(非原子的,强大的)。

每次加载HomeView时,内存会增加数量,我不知道发生了什么。

有人可以帮我吗?这个问题让我惊愕。

4 个答案:

答案 0 :(得分:0)

几个问题:

  1. 由于内存使用情况,您的应用会在一段时间后被杀?
  2. 为什么要在-viewDidAppear创建新主题?
  3. 您是否尝试过模拟内存警告? (在模拟器中:Hardware -> Simulate Memory Warning Shift + CMD + M
  4. 内存警告后内存是否会下降?

答案 1 :(得分:0)

这不是你问题的完整答案,但除非他们不是顶级对象,否则你的网点必须是弱的。

答案 2 :(得分:0)

所有使用的IBOutlet应该是(非原子的,弱的)。试试这个..

答案 3 :(得分:0)

我猜你正在使用segues“向后”回到以前的控制器。真的吗?如果是这样,那就是你的问题 - 除非你使用unwind segue,否则你永远不应该使用segue向后,因为它们总是实例化新的控制器。因此,当回到以前的控制器时,要么使用展开,要么使用反转前向segue的代码 - 即popViewControllerAnimated:如果forward segue是push,则dismissViewControllerAnimated:completion:如果segue是模态。< / p>