博客> NSOperation 在直播礼物动画中的使用
NSOperation 在直播礼物动画中的使用
2017-11-24 14:51 评论:0 阅读:143 lvhahaha
NSOperation 直播礼物动画

在直播app中,涉及到送礼物,然后显示礼物的过程。如果只是直接使用代码逻辑进行礼物的显示,则显得代码凌乱,不工整。所以加入了NSOperation 进行礼物动画的操作管理。

首先创建一个继承与NSOperation 的AnimOperation。 创建一个操作,然后进行NSOperation 方法的start重写。同时要对其私有属性进行改写,监听。

  • (instancetype)init { self = [super init]; if (self) { _executing = NO; _finished = NO;

    } return self; }

//需要手动发送KVO通知

  • (void)setFinished:(BOOL)finished { [self willChangeValueForKey:@"isFinished"]; _finished = finished; [self didChangeValueForKey:@"isFinished"]; }

  • (void)setExecuting:(BOOL)executing { [self willChangeValueForKey:@"isExecuting"]; _executing = executing; [self didChangeValueForKey:@"isExecuting"]; }

  • (void)start { //要判断是否发起爆屏的条件 //1314 出现心 砖石总价值 > = 200 出现 self.executing = YES; if ([self isCancelled]) { self.finished = YES; return; } [[NSOperationQueue mainQueue] addOperationWithBlock:^{

    // 你的动画操作-写在这里。。然后在动画操作结束的时候,记得把self.finished = YES;

    }];

}

然后在接收到webScoket的时候,进行操作的add,然后操作会自动进行start。

  • (NSOperationQueue *)queue { if (_queue==nil) { _queue = [[NSOperationQueue alloc] init]; _queue.maxConcurrentOperationCount = 1;

    } return _queue; } 如果是串行队列的使用则进行Operation 的叠加。maxConcurrentOperationCount 默认是-1.指的是一次可进行无限操作。这里设置为1,一次只是一次,串行进行。 [self.queue addOperation:op]; 只是个人见解,有更好的做法,或者有什么错误请指出,谢谢。 由于是完整项目。没有demo,索要代码请私聊。

收藏
1
sina weixin mail 回到顶部