Possible de passer [auto anyFunction] dans les blocs sans __objet faible (iOS 5 + ARC)

Est-il possible de passer [auto anyFunction] dans les blocs sans __faiblesse de l'objet de l'auto?

Comme un exemple de ceci est valable code dans le Cadre du Système:

[UIView animateWithDuration:0.8 animations:^{
            //Do animationStuff
        } completion:^(BOOL finished) {
            [self anyFunction];
 }];

Vous pouvez passer [self anyFunction] dans la réalisation bloc sans avertissement. Mais si vous écrivez votre propre méthode de l'achèvement du bloc, l'avertissement suivant se produit: capture 'auto' fortement dans ce bloc est susceptible de conduire à un cycle de conserver.

Une solution de travail est assez simple (iOS 5 + ARC). Avant le bloc de déclarer:

__weak MyClass *weakSelf = self;

et à l'achèvement de bloc, vous devez appeler:

[weakSelf anyFunction];

Mais, pour en revenir à ma Question: Pourquoi il n'est pas nécessaire dans le Cadre du Système d'Api pour utiliser un __weak objet et d'utiliser self sans aucun avertissement. Et comment mettre en œuvre une méthode sans la nécessité d'un __weak objet dans le bloc?

Vous remercie pour votre effort.