recherche

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

Objective-c - Concernant le problème de l'utilisation de self dans la méthode getter pour provoquer une boucle infinie ?

  1. Attributs :
    @property (strong, nonatomic) NSArray *dataArr;

  2. Réécrivez la méthode getter (le code concerne le chargement paresseux, mais ce n'est pas le sujet)

 - (NSArray *)dataArr{
    //1. 判断是否为空
    if(_dataArr == nil){ //不能写self.dataArr
        self.dataArr = @[ //可以写self.dataArr
                         
                         .........
                         
                        ];
    }
    return _dataArr;
    
}

Ce que je sais maintenant, c'est que l'utilisation de self.dataArr appellera les attributs getter方法 et setter方法

Donc je pense que si entre parenthèses ne peut pas être utilisé self.dataArr sinon ce sera une boucle infinie

Mais je ne sais pas pourquoi vous pouvez utiliser self.dataArr dans des accolades if ?

Est-ce parce que les accolades sont des affectations, donc seul setter方法 sera appelé ?

Puis-je écrire self.dataArr après le retour ?

C'est un peu déroutant, s'il vous plaît donnez-moi quelques réponses...

仅有的幸福仅有的幸福2857 Il y a quelques jours695

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

  • 高洛峰

    高洛峰2017-05-02 09:31:01

    . . .
    À l'intérieur des accoladesself.dataArr = @[] n'appellera que le setter, donc il n'y a pas de problème, mais return self.dataArr; appellera le getter, provoquant une boucle infinie
    Vous pouvez l'enregistrer vous-même ou suivre les points d'arrêt pour découvrez.
    Tutoriel approprié

    répondre
    0
  • Annulerrépondre