簡體   English   中英

跨多個視圖管理內存

[英]Managing memory across multiple views

我正在構建一個應用程序,該應用程序的主視圖由地圖視圖組成。 第二個視圖具有一些必要的配置選項(配置視圖)。 我使用部分curl segue選擇了此配置視圖。

我遇到的問題是未維護我的配置視圖的狀態。

例如,

我將進入配置視圖,對設置進行一些更改,然后返回主地圖視圖。 一旦我再次返回到配置視圖,這些值將恢復為默認值。 有問題的值是distanceFilterValue

這是我的配置視圖控制器的實現:

@interface SimpleConfigViewController()
//private interface inside implementation
@property (weak, nonatomic) UISlider * distanceFilterSlider;
@property (strong, nonatomic) NSNumber *distanceFilterValue;
@end

@implementation SimpleConfigViewController

@synthesize distanceFilterLabel = _distanceFilterLabel;
@synthesize distanceFilterSlider = _distanceFilterSlider;
@synthesize distanceFilterValue = _distanceFilterValue;

- (NSNumber *)distanceFilterValue {
    if (!_distanceFilterValue) {
        _distanceFilterValue = [NSNumber numberWithFloat:250.0];
    }
    return _distanceFilterValue;
}

- (IBAction)distanceSliderValueChanged:(UISlider *)sender {
    self.distanceFilterValue = [NSNumber numberWithFloat:sender.value];
    //update GUI
    self.distanceFilterLabel.text = [NSString stringWithFormat:@"%.f m", sender.value];
}


@end

在我看來,由於我始終保持着指向distanceFilterValue的強大指針,因此當我返回配置視圖時,該值應該是正確的。 我顯然在這里錯過了一些東西。

在此先感謝您的幫助。

我可能是錯的,但是我猜配置視圖已卸載,並在第二次推送時從XIB重新加載。

無論如何,您都應該將值存儲在模型對象中而不是控制器中!

我認為Erik是正確的,每次您為configView調用viewDidLoad時,它將重置。 您可以使用Singleton或NSUserDefaults解決此問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM