Je suis novice en Objective-C. Voici ma compréhension (comme dans les commentaires) concernant ARC d'un code simple pour ajouter par programme une sous-vue. S'il vous plait corrigez moi si je me trompe. Surtout sur cette déclaration:Objectif-C: comprendre ARC
"points viewController à myView faiblement" signifie que _myView (le Ivar de ViewController) pointe vers un objet UIView faiblement
// _myView stores a pointer pointing to a UIView object
// "ViewController points to myView weakly" ACTUALLY means that _myView (ViewController's ivar) points to a UIView object weakly
@interface ViewController()
@property (nonatomic,weak) UIView *myView;
@end
@implementation
@synthesize myView = _myView;
@end
- (void)viewDidLoad
{
[superviewDidLoad];
CGRect viewRect = CGRectMake(10, 10, 100, 100);
// a UIView object is alloc/inited
// mv is a pointer pointing to the UIView object strongly (hence the owner of it)
UIView *mv = [[UIView alloc] initWithFrame:viewRect];
// _myView points to the UIView object weakly
// Now the UIView object now have two pointers pointing to it
// mv points to it strongly
// _myView points to it weakly, hence NOT a owner
self.myView = mv;
// self.view points to the UIView object strongly
// Now UIView object now have THREE pointer pointing to it
// Two strong and one weak
[self.view addSubview:self.myView];
}
// After viewDidLoad is finished, mv is decallocated.
// Now UIView object now have two pointer pointing to it. self.view points to it strongly hence the owner, while _myView points to it weakly.
Désolé ma mauvaise. En fait ce que j'essaie de dire est: Après que viewDidLoad est fini, mv (un pointeur fort) est mis à zéro. Est-ce une expression correcte? – Philip007
mv est une variable locale. Une fois qu'il quitte la portée de viewDidLoad, il est défini sur zéro. – Abizern
@Abizern + 1 Abizern. Bon commentaire! –