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);

最初の出力は問題ありません。しかし、メイン クラスの別のメソッドから appSettings にアクセスしようとすると、appSettings は (null) です。

ご協力ありがとうございました。

4

3 に答える 3

1

ビューがアンロードされたか、View Controller が解放された可能性があります。ビューコントローラーが開始されるメソッドに初期化コードを移動してみてください(- (id)initWithNibName: bundle:)

于 2012-04-04T05:32:33.177 に答える
0

それ以外の:

@property (nonatomic, strong) AppSettings *appSettings;

試す:

@property (nonatomic, retain) AppSettings *appSettings;

そして、私はあなたAppSettingsをシングルトンクラスにすることをお勧めします。

于 2012-04-04T05:58:28.050 に答える
0

When you say you initialise the view contoller in AppDelegate I presume you mean MyViewController *theView = [[MyViewController alloc] init]; or something like that. That will be your first view and you should initialise AppSettings in viewDidLoad of MyViewController, not the AppDelegate.

demon9733 suggestion regarding making AppSettings a singleton is a good one as you will be able to easily access your settings from anywhere in the app.

Also verify whether ARC is being used for MyViewController (or whatever it might be)

于 2013-02-20T02:54:36.687 に答える