1

ビューコントローラAでプロパティを定義します

  @property (nonatomic) BOOL updateOnServer;

また、それを合成し、値を与えてから、このような別のビューコントローラーBからこの変数にアクセスしようとします

  A * view = [[A alloc] init];

  if (view.updateOnServer)

しかし、それは機能していません。updateOnServerは常にNOです。

誰かがこれを解決する方法についてアイデアを持っていますか?

4

3 に答える 3

3

viewControllerA内で設定updateOnServerし、viewControllerBで、updateOnServer何も設定していない新しいインスタンスを作成します。したがって、BOOLのデフォルト値であるNOを取ります。

考えられる解決策については、こちらをご覧ください。

実行する方法はたくさんあります。変数をグローバル、静的、シングルトンにし、引数として渡し、通知として投稿します。

于 2013-02-25T08:47:18.990 に答える
2

変数の情報を保存および取得する簡単な方法は、NSUserDefaultsですが、しばらくは好ましくありません。NSUserDefaultsの使用NSUserDefaultsの使用方法については、リンク
を 確認してください。または、グローバル変数を宣言することもできます。

于 2013-02-25T08:58:34.547 に答える
1

次のように、いつでもシングルトンクラスを使用できます。

次のように新しいクラスを作成します。

ServerCheck.h

#import <Foundation/Foundation.h>

@interface ServerCheck : NSObject
{
    BOOL updateOnServer;
}
@property (nonatomic) BOOL updateOnServer;

+ (id)sharedSingletonController;
@end

ServerCheck.m

#import "ServerCheck.h"

@implementation ServerCheck
@synthesize updateOnServer
+(ServerCheck*)sharedSingletonController{

    static ServerCheck *sharedSingletonController;

    @synchronized(self) {
        if(!sharedSingletonController){
            sharedSingletonController = [[ServerCheck alloc]init];
        }
    }

    return sharedSingletonController;
}

-(id)init{
    self = [super init];
    if (self != nil) {

        }
    return self;
}

@end

次のようにBOOL値にアクセスできます。

ServerCheck *serverData = [ServerCheck sharedSingletonController];
serverData.updateOnServer = YES;
于 2013-02-25T09:27:26.970 に答える