CAAnimation循环引用

image

解决方案0


@protocol HYAnimationWeakDelegate <NSObject>
@optional
- (void)animationDidStart:(CAAnimation *)anim;
- (void)animationDidStop:(CAAnimation *)anim;
@end

@interface HYAnimationDelegateManager : NSObject <CAAnimationDelegate>
@property (weak, nonatomic) id<HYAnimationWeakDelegate> delegate;
@end

@implementation HYAnimationDelegateManager
- (void)animationDidStart:(CAAnimation *)anim {
    if (_delegate && [_delegate respondsToSelector:@selector(animationDidStart:)]) {
        [_delegate animationDidStart:anim];
    }
}
- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag {
    if (_delegate && [_delegate respondsToSelector:@selector(animationDidStop123:)]) {
        [_delegate animationDidStop:anim];
    }
}
@end

//使用:
HYAnimationDelegateManager * manager = [HYAnimationDelegateManager new];
manager.delegate = self;
anim.delegate = manager;

解决方案1

声明一个单独的类实现delegate的回调

//.h
#import <UIKit/UIKit.h>

@interface AnimationDelegate : NSObject

@end

//.m
#import "AnimationDelegate.h"

@implementation AnimationDelegate

- (void)animationDidStart:(CAAnimation *)anim
{
    NSLog(@"Animation Start");
}

- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag
{
    NSLog(@"Animation Stop");
}

- (void)dealloc
{
    NSLog(@"Delegate Dealloc");
}

@end

使用方式

self.animation.delegate = [[AnimationDelegate alloc]init];

eg: http://blog.csdn.net/a787188834/article/details/78303594

解决方式2:
使用NSProxy来解决
该类可直接引用YYKit中的YYWeakProxy类
使用方法

self.animation.delegate = [YYWeakProxy proxyWithTarget:self];

//NSTimer
https://www.jianshu.com/p/469bf43e522b

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 【综合】【学校教育】{办公文档}http://www.jianshu.com/p/82aba897d1eb{办公文...
    5a15944f1ba2阅读 623评论 0 1
  • # 信息系统前沿课--范老师授课 #第二次作业## 一、重新使用Markdown ##熟悉语法,了解Markdow...
    thought_10c7阅读 774评论 0 0
  • 【综合】【账号】13831953942-13930914646-13930914564【账号】【串号验证】8699...
    5a15944f1ba2阅读 513评论 0 1
  • 三年前,211毕业的男生小A签到了我所在的单位。当时,因为面临新项目建设,单位技术骨干会被抽去支援,现有技术力量不...
    心向暖阅读 1,097评论 9 33
  • 掌握一门外语的最少必要的知识有哪些呢? 1.认识字母 2.认识音标 3.会查字典 4.懂基本语法 5.会查语法书 ...
    冰契约阅读 272评论 0 0