Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 跨多个视图管理内存_Iphone_Objective C_Ios_Xcode4_Ios5 - Fatal编程技术网

Iphone 跨多个视图管理内存

Iphone 跨多个视图管理内存,iphone,objective-c,ios,xcode4,ios5,Iphone,Objective C,Ios,Xcode4,Ios5,我正在构建一个应用程序,它有一个由地图视图组成的主视图。第二个视图有一些必要的配置选项(配置视图)。我使用部分卷曲序列切换到此配置视图 我遇到的问题是没有维护配置视图的状态 比如说, 我将进入配置视图,对设置进行一些更改,然后返回主地图视图。一旦我再次返回到配置视图,这些值将返回到它们的默认值。所讨论的值是distanceFilterValue 下面是我的配置视图控制器的实现: @interface SimpleConfigViewController() //private interface

我正在构建一个应用程序,它有一个由地图视图组成的主视图。第二个视图有一些必要的配置选项(配置视图)。我使用部分卷曲序列切换到此配置视图

我遇到的问题是没有维护配置视图的状态

比如说,

我将进入配置视图,对设置进行一些更改,然后返回主地图视图。一旦我再次返回到配置视图,这些值将返回到它们的默认值。所讨论的值是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来解决此问题。

与此相关的是映射视图的实现。在我实际开始将配置值连接到映射视图之前,我正在尝试使配置视图独立于映射视图工作。我已放置日志消息来测试此问题,并且在第一次调用配置视图viewDidLoad的加载。但返回地图视图后,不会调用VIEDIDUNLOAD。我意识到我应该在模型对象中放置distanceFilterValue,但保持指向NSNumber对象的强指针不会达到同样的效果吗?我的模型将是一个简单的包装类,我将为其保留一个强大的指针。(这是我的思考过程,我的假设很可能是错误的)我想我不明白的是,在什么时候(以及为什么)我的distanceFilterValue强指针被释放了?在您的configView中viewDidLoad中有什么?只是标准的[super viewDidLoad];