I was following a tutorial on a Core Animation book and I tried to do the following.
@interface ViewController ()
@property (nonatomic, weak) IBOutlet UIView * layerView;
@property (nonatomic, weak) CALayer *blueLayer;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.blueLayer = [CALayer layer];
self.blueLayer.frame = CGRectMake(50.0f, 50.0f, 100.0f, 100.0f);
self.blueLayer.backgroundColor = [UIColor blueColor].CGColor;
[self.layerView.layer addSublayer: self.blueLayer];
}
...
@end
According to the book, the code above should print a blue layer on the screen in the middle on top of layerView
. But, I can only see layerView
and blueLayer
is no where to be seen. Does anyone know what is happening? I'm lost.
You should be getting a warning on this line
self.blueLayer = [CALayer layer];
Since self.bluelayer
is a weak pointer, ARC will discard the object as soon as it's created. The property should be declared strong
.