您好我的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时,内存会增加数量,我不知道发生了什么。
有人可以帮我吗?这个问题让我惊愕。
答案 0 :(得分:0)
几个问题:
-viewDidAppear
创建新主题?Hardware -> Simulate Memory Warning
或 Shift + CMD + M )内存警告后内存是否会下降?
答案 1 :(得分:0)
这不是你问题的完整答案,但除非他们不是顶级对象,否则你的网点必须是弱的。
答案 2 :(得分:0)
所有使用的IBOutlet应该是(非原子的,弱的)。试试这个..
答案 3 :(得分:0)
我猜你正在使用segues“向后”回到以前的控制器。真的吗?如果是这样,那就是你的问题 - 除非你使用unwind segue,否则你永远不应该使用segue向后,因为它们总是实例化新的控制器。因此,当回到以前的控制器时,要么使用展开,要么使用反转前向segue的代码 - 即popViewControllerAnimated:如果forward segue是push,则dismissViewControllerAnimated:completion:如果segue是模态。< / p>