我创建了一个包含布尔值的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)
感谢您的帮助。
答案 0 :(得分:1)
视图很可能已卸载,或者您的视图控制器已被释放。尝试将初始化代码移动到启动视图控制器的方法( - (id)initWithNibName:bundle :)。
答案 1 :(得分:0)
而不是:
@property (nonatomic, strong) AppSettings *appSettings;
尝试:
@property (nonatomic, retain) AppSettings *appSettings;
我建议你将AppSettings
作为单身人士课程。
答案 2 :(得分:0)
当你说你在AppDelegate中初始化视图控制器时,我认为你的意思是MyViewController * theView = [[MyViewController alloc] init];或类似的东西。这将是您的第一个视图,您应该在MyViewController的viewDidLoad中初始化AppSettings,而不是AppDelegate。
关于使AppSettings成为单身人士的恶魔9733建议非常好,因为您可以从应用程序的任何位置轻松访问您的设置。同时验证ARC是否用于MyViewController(或其可能的任何内容)