项目总结--Version 1.0(四)

欢迎加入【iOS/Swift/OC开发交流群|127183325】交流学习

关于我们在开发的时候是用Block还是Delegate,网上已经有了很多的讨论,个人感觉这一篇很不错,开发该选择Blocks还是Delegates,原文地址在这,推荐大家看看。所以,在此就不细说是选择Blocks还是Delegates了,只将关键点放这,更详细的内容可以点击上面放的链接查阅。

  • 大多数delegate protocols 都拥有几个消息源。
  • 一个对象只能有一个delegate。
  • 一般的delegate方法会有返回值。
  • Delegates更关注过程,Blocks更关注结果。

如果能在开发中遵循以上几点的话,Blocks和Delegate基本上就不会用在不合适的地方了,是不是挺简单的。
但是我们应该从这篇文章中获得更多的内容。比如,如果再遇到类似的疑惑,我们应该怎么做。首先,我们可以在搜索引擎中直接搜索,这是最简单也是最直接的方法。在开发中我们遇到的大部分的问题在网上都能查到相关的解决方案,我们应该更好的利用这个巨大的知识库。其次,如过很不巧的我们遇到了别人没有遇到的问题,首先,这得恭喜你,因为你走到了大部分开发者的前面,如过你能找到好的解决方法,你会从中学到很多。另外,要解决这样的问题需要花费更多的时间和精力,最终结果只有两种,解决或者没有解决。
在上面提到的文章中给了我们一个很好的示范。我们要利用好苹果的官方文档,在官方文档中我们不仅仅能了解各种API的用法,更重要的是我们还能在文档中看到苹果官方在编程中的习惯,这个习惯能给我们一个很好的参考。
下面看一下我在1.0 版本中使用的Blocks,以及为什么要在2.0种放弃使用它。
这是一段文件传输的代码:

[[FBSocketTool shareInstance] sendTCPData:transferDatasArray[fileDataIndex] withTag:tag didWritePartialDataOfLengthBlock:^(NSUInteger partialLength) { sendSize += partialLength; CGFloat progress = (sendSize*1.0/allFilesSize)*100; [[NSNotificationCenter defaultCenter] postNotificationName:FBUpdateNavigationBarProgress object:[NSNumber numberWithFloat:progress]]; }];

方法的实现:

- (void)sendTCPData:(NSData *)data withTag:(long)tag didWritePartialDataOfLengthBlock:(void (^)(NSUInteger))block { if (self.TCPSocket.isConnected) { self.WritePartialDataOfLengthBlock = block; [self.TCPSocket writeData:data withTimeout:-1 tag:tag]; }else { NSLog(@"socket未连接"); } }

为了能获取文件传输的进度,专门创建了一个Block
@property (nonatomic, copy)void (^WritePartialDataOfLengthBlock)(NSUInteger partialLength);

很明显,我们在上传文件的时候需要获取传输的三个状态:开始传输,传输中和传输结束。根据我们查看苹果的官方文档,这个地方最好的方法还是使用Delegates来实现,所以在2.0中根据上面总结的几点做了一些修改。

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

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,386评论 30 472
  • iPhone的标准推荐是CFNetwork 库编程,其封装好的开源库是 cocoa AsyncSocket库,用它...
    Ethan_Struggle阅读 6,700评论 2 12
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,716评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,789评论 25 709
  • Blocks编程要点 目录 简介............................................
    xuejunjun阅读 5,123评论 0 5