Ich versuche, einen CALayer als Sublayer in einer UIView-Subklasse hinzuzufügen, aber wenn ich den Sublayer innerhalb der init-Methode hinzufüge, erhalte ich EXC_BAD_ACCESS
, wenn ich die View einer anderen Ansicht oder einem anderen Fenster hinzufüge .Hinzufügen eines CALayer-Sublayers innerhalb von UIView init
Init Methode:
- (id)initWithTitle:(NSString *)title message:(NSString *)message
{
if ((self = [super init]))
{
self.title = title;
self.message = message;
self.alertLayer = [[CALayer alloc] init];
self.layer.cornerRadius = kCORNER_RADIUS;
self.layer.shadowRadius = 3.0;
self.layer.shadowColor = [UIColor blackColor].CGColor;
self.layer.shadowOffset = CGSizeMake(15, 20);
self.layer.shadowOpacity = 1.0;
self.alertLayer.delegate = self;
self.alertLayer.masksToBounds = YES;
self.alertLayer.cornerRadius = kCORNER_RADIUS;
[self.layer addSublayer:self.alertLayer]; // This line of code seems to cause EXC_BAD_ACCESS
}
return self;
}
EXC_BAD_ACCESS
wird bewirkt, nachdem [self.view addSubview:alertView]
in einem View-Controller oder UIWindow aufruft.
Welche Speicherverwaltungssemantik verwenden Sie für die Eigenschaft 'alertLayer'? – jlehr