recherche

Maison  >  Questions et réponses  >  le corps du texte

objective-c - iOS单例创建的一点疑惑

线程安全的单例常用写法,

+(AccountManager *)sharedManager{
        static AccountManager *defaultManager = nil;
        disptch_once_t once;
        disptch_once(&once,^{
          defaultManager = [[self alloc] init];
        });
        return defaultManager;
}

在用的过程中,有点疑惑的点是:
static AccountManager *defaultManager = nil;
这行代码是在sharedManager方法之内的,
在第二次调用sharedManager的时候defaultManager不会被置为nil吗?

天蓬老师天蓬老师2767 Il y a quelques jours812

répondre à tous(3)je répondrai

  • 怪我咯

    怪我咯2017-04-18 09:58:10

    Les variables locales modifiées statiques initialisent la mémoire lors de la compilation. Il n'est initialisé qu'une seule fois, et il n'y a qu'une seule mémoire dans le programme, qui ne sera détruite qu'à la fin du programme. Il est stocké dans une zone de stockage statique. Vous pouvez définir un point d'arrêt et l'essayer. Ni once ni defaultManager ne doivent être exécutés. Il initialise la mémoire lors de la compilation.

    répondre
    0
  • 天蓬老师

    天蓬老师2017-04-18 09:58:10

    Une variable modifiée par static ne sera initialisée qu'une seule fois, elle ne sera donc pas mise à zéro la deuxième fois.

    répondre
    0
  • 大家讲道理

    大家讲道理2017-04-18 09:58:10

    Je suis d'accord avec ce qui a été dit ci-dessus. Notez le modificateur statique.

    répondre
    0
  • Annulerrépondre