Menu
Woocommerce Menu

NSObject中执行Selector的相关方法,封装网络请求工具类

0 Comment


其实这篇博客是顺着上一篇视频录制的博客一起写的,但是感觉放在一起太长了,不太好阅读,所以把它分成两部分了。

图片 1为什么要封装.png

目录

[背景/案例][1. 对当前Run Loop中Selector Sources的取消][2.
在NSThread中执行Selector][3. 在NSThread中的Run Loop中执行Selector]

录制完视频后,我们想在录制视频的预览层上无限循环播放我们的小视频,是不是很炫酷,这时候我们就有三中选择了:1.MPMoviePlayerController2.AVPlayer3.AVAssetReader+AVAssetReaderTrackOutput

  • 可以降低网络请求方法与Controller的耦合度,即使网络使用的第三方框架发生不兼容、错误等问题从而想换框架时,也不用到每个控制器里面改代码(50、60页面会改到想哭).
  • 建立单例工具类,方便管理
  • 优化代码结构

背景

在做类似网易客户端中的图集功能的时候,用到单击隐藏导航条,双击放大图片的功能;这里用了UICollectionView,图片参照了MWPhoto库里面MWZoomingScaleView的实现逻辑,然后发现一个很有趣的现象,MWZoomingScaleView是用UITouch来实现的,代码如下:

- touchesEnded:touches withEvent:(UIEvent *)event { UITouch *touch = [touches anyObject]; NSUInteger tapCount = touch.tapCount; switch  { case 1: [self handleSingleTap:touch]; break; case 2: [self handleDoubleTap:touch]; break; case 3: [self handleTripleTap:touch]; break; default: break; } [[self nextResponder] touchesEnded:touches withEvent:event];}

这里在进入双击事件前会先调用一次单击事件,然后MWZoomingScaleView是这么处理这个问题的,思路很有意思,代码如下:

- handleSingleTap:touchPoint { [_photoBrowser performSelector:@selector(toggleControls) withObject:nil afterDelay:0.2];}

– handleDoubleTap:touchPoint {// if Error image,stop handingif
(_loadingError) {return;}

 // Cancel any single tap handling [NSObject cancelPreviousPerformRequestsWithTarget:_photoBrowser]; ...}

这里先是延迟调用单击事件,然后在双击事件里又取消掉了单击的方法。于是就顺便总结下Selector的相关用法吧

标签:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章

网站地图xml地图