0

我创建了一个包含布尔值的类 AppSettings:

#import <Foundation/Foundation.h>

@interface AppSettings : NSObject{

bool bip10secCountdown;
bool jv10secCountdown;
bool jv30secAlert;
bool jv1minAlert;
bool jvp5minAlert;

}

@property bool bip10secCountdown;
@property bool jv10secCountdown;
@property bool jv30secAlert;
@property bool jv1minAlert;
@property bool jv5minAlert;

@end

和实施:

#import "AppSettings.h"

@implementation AppSettings

@synthesize bip10secCountdown, jv10secCountdown, jv30secAlert, jv1minAlert, jv5minAlert;


- (id)init
{
    self = [super init];
    if (self){
    }
    return self;

}

@end

然后我试图在我的主类中使用这个类,但是在 viewDidLoad 中初始化对象之后,当我想再次使用它时,它显示为 null.. 所以我猜它发布得太早了。我正在使用 ARC,所以我不手动管理内存。难道我做错了什么 ?

主类中的声明:

AppSettings *appSettings;


}

@property(nonatomic)bool activated;
@property (nonatomic, strong) AppSettings *appSettings;

和实施:

@synthetize appSettings
...
- (void)viewDidLoad
{
    // Initialize the model
    self.appSettings = [[AppSettings alloc]init];

NSLog(@"appSettings = %@",self.appSettings);

第一个输出正常。但是当我尝试从 Main 类中的另一个方法访问 appSettings 时,appSettings 为 (null)

谢谢您的帮助。

4

3 回答 3

1

视图很可能已卸载,或者您的视图控制器已被释放。尝试将初始化代码移动到启动视图控制器的方法中(- (id)initWithNibName: bundle:)

于 2012-04-04T05:32:33.177 回答
0

当您说您在 AppDelegate 中初始化视图控制器时,我认为您的意思是 MyViewController *theView = [[MyViewController alloc] init]; 或类似的东西。这将是您的第一个视图,您应该在 MyViewController 的 viewDidLoad 中初始化 AppSettings,而不是 AppDelegate。

demo9733 关于使 AppSettings 成为单例的建议是一个很好的建议,因为您将能够从应用程序的任何位置轻松访问您的设置。

还要验证 ARC 是否用于 MyViewController (或任何可能的)

于 2013-02-20T02:54:36.687 回答
0

代替:

@property (nonatomic, strong) AppSettings *appSettings;

尝试:

@property (nonatomic, retain) AppSettings *appSettings;

而且我建议您将AppSettings其设置为单身人士。

于 2012-04-04T05:58:28.050 回答