我是 Objective-C 的新手。这是我对一些用于以编程方式添加子视图的简单代码的 ARC 的理解(如在评论中)。如果我错了,请纠正我。特别是在这个声明中:
“ViewController 弱指向 myView”实际上意味着 _myView(ViewController 的 ivar)弱指向 UIView 对象
// _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.