- Fix dealloc crash
This commit is contained in:
1 parent
49e429c393
commit
52ac833f7c
3 files changed
+32
-41
No files matched your search
@@ -9,6 +9,8 @@
|
||||
#import "GradientButton.h"
|
||||
#import "PureLayout.h"
|
||||
|
||||
static char ClassNameKVOContext = 0;
|
||||
|
||||
@interface GradientButton()
|
||||
|
||||
@property (nonatomic, strong) CAGradientLayer *gradientLayer;
|
||||
@@ -16,8 +18,6 @@
|
||||
@property (nonatomic, strong) NSMutableArray *cgColors;
|
||||
@property (nonatomic) CGPoint startPoint;
|
||||
@property (nonatomic) BOOL didUpdateConstraints;
|
||||
@property (nonatomic, strong) UIView *container;
|
||||
@property (nonatomic, assign) BOOL didSetupConstraints;
|
||||
|
||||
@end
|
||||
|
||||
@@ -30,12 +30,6 @@
|
||||
|
||||
_colors = [[NSMutableArray alloc] init];
|
||||
_cgColors = [[NSMutableArray alloc] init];
|
||||
_container = [UIView newAutoLayoutView];
|
||||
[_container setBackgroundColor:[UIColor clearColor]];
|
||||
[_container setAlpha:0];
|
||||
[self addSubview:_container];
|
||||
|
||||
[_container addObserver:self forKeyPath:@"bounds" options:0 context:nil];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
@@ -45,12 +39,6 @@
|
||||
if (self) {
|
||||
_colors = [[NSMutableArray alloc] init];
|
||||
_cgColors = [[NSMutableArray alloc] init];
|
||||
_container = [UIView newAutoLayoutView];
|
||||
[_container setBackgroundColor:[UIColor clearColor]];
|
||||
[_container setAlpha:0];
|
||||
[self addSubview:_container];
|
||||
|
||||
[_container addObserver:self forKeyPath:@"bounds" options:0 context:nil];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
@@ -60,12 +48,6 @@
|
||||
if (self) {
|
||||
_colors = [[NSMutableArray alloc] init];
|
||||
_cgColors = [[NSMutableArray alloc] init];
|
||||
_container = [[UIView alloc] initWithFrame:CGRectMake(0,0,frame.size.width,frame.size.height)];
|
||||
[_container setBackgroundColor:[UIColor clearColor]];
|
||||
[_container setAlpha:0];
|
||||
[self addSubview:_container];
|
||||
|
||||
[_container addObserver:self forKeyPath:@"bounds" options:0 context:nil];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
@@ -109,19 +91,10 @@
|
||||
}
|
||||
}
|
||||
|
||||
- (void) updateConstraints {
|
||||
[super updateConstraints];
|
||||
|
||||
if (!self.didSetupConstraints) {
|
||||
[_container autoPinEdgesToSuperviewEdges];
|
||||
[_container autoAlignAxisToSuperviewAxis:ALAxisHorizontal];
|
||||
[_container autoAlignAxisToSuperviewAxis:ALAxisVertical];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
- (void) setFrame:(CGRect)frame {
|
||||
[super setFrame:frame];
|
||||
[_container setFrame:CGRectMake(0,0,frame.size.width,frame.size.height)];
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
if (_gradientLayer) {
|
||||
[self setbackgroundLayerWithColors:_colors startPoint:_startPoint];
|
||||
@@ -141,20 +114,14 @@
|
||||
|
||||
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
|
||||
{
|
||||
if (object == self && [keyPath isEqualToString:@"bounds"]) {
|
||||
if (context == ClassNameKVOContext && object == self && [keyPath isEqualToString:@"bounds"]) {
|
||||
if(_gradientLayer) {
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[self setbackgroundLayerWithColors:_colors startPoint:_startPoint];
|
||||
});
|
||||
|
||||
[self setbackgroundLayerWithColors:_colors startPoint:_startPoint];
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
- (void) dealloc {
|
||||
|
||||
[_container removeObserver:self forKeyPath:@"bounds"];
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
Reference in new issue
Block a user