简单中的不简单,iphone应用开发实践总结:《社区类iphone应用开发的技术实践》|...

14
iOS DevCamp Produced by CSDN Website: h5p://devcamp.csdn.net/ Weibo: h5p://weibo.com/cmdnclub/ www.mamabang.com

Upload: imshining-devcamp

Post on 11-Jul-2015

1.081 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: 简单中的不简单,iPhone应用开发实践总结:《社区类iPhone应用开发的技术实践》| 麻麻帮 陈剑飞

iOS  DevCamp  

Produced  by  CSDN  Website:  h5p://devcamp.csdn.net/  Weibo:  h5p://weibo.com/cmdnclub/  

www.mamabang.com  

Page 2: 简单中的不简单,iPhone应用开发实践总结:《社区类iPhone应用开发的技术实践》| 麻麻帮 陈剑飞

简单中的不简单  

 社区类iOS应用开发的技术实践分享  

陈剑飞,  麻麻帮创始人  2012年7月  

www.mamabang.com  

Page 3: 简单中的不简单,iPhone应用开发实践总结:《社区类iPhone应用开发的技术实践》| 麻麻帮 陈剑飞

-­‐  (void)someMethod  {      if  ([someOther  boolValue])  {          //Do  something  important      }  }    改写为    -­‐  (void)someMethod  {      if  (![someOther  boolValue])  return;        //Do  something  important  }    

开始协作之前  •  代码缩进  

–  空格长度(2?4?)  –  函数声明中的空格  –  行长度是否要限制?限制多少?  –  结尾”{“的位置  –  代码中的空行  

•  变量命名规则  –  选择合适的词  (Info?  Data?  Object?)  –  变量名长短  –  类变量的下划线  –  大小写 (匈牙利命名法?驼峰命名法?)  

www.mamabang.com  

参考:    1.  Apple  “Coding  Guidelines  for  

Cocoa”  

2.  Google  “ObjecZve-­‐C  Style  Guide”  

3.  ZDS  “Code  Style  Guide”  

Page 4: 简单中的不简单,iPhone应用开发实践总结:《社区类iPhone应用开发的技术实践》| 麻麻帮 陈剑飞

-­‐  (void)someMethod  {      if  ([someOther  boolValue])  {          //Do  something  important      }  }    改写为    -­‐  (void)someMethod  {      if  (![someOther  boolValue])  return;        //Do  something  important  }    

开始协作之前  •  函数命名规则  

–  清晰有效,不会有歧义  –  慎用缩写(SND,  PSWD,  IMG),写全称  –  不同类中相似方法,尽量用同样的名字  

•  注释要求  –  大部分情况下函数名和变量名应该能说明问题  –  不要用注释临时删除代码  –  不需要注释的代码是最整洁的代码  

www.mamabang.com  

参考:    1.  Apple  “Coding  Guidelines  for  

Cocoa”  

2.  Google  “ObjecZve-­‐C  Style  Guide”  

3.  ZDS  “Code  Style  Guide”  

Page 5: 简单中的不简单,iPhone应用开发实践总结:《社区类iPhone应用开发的技术实践》| 麻麻帮 陈剑飞

-­‐  (void)someMethod  {      if  ([someOther  boolValue])  {          //Do  something  important      }  }    改写为    -­‐  (void)someMethod  {      if  (![someOther  boolValue])  return;        //Do  something  important  }    

开始协作之前  

•  语法相关  –  对于空值的判断  –  对于布尔变量的判断  –  代码主路径  –  Dealloc方法中的代码顺序  –  Protocal  和#pragma的使用  

•  Project文件夹的组织  

www.mamabang.com  

参考:    1.  Apple  “Coding  Guidelines  for  

Cocoa”  

2.  Google  “ObjecZve-­‐C  Style  Guide”  

3.  ZDS  “Code  Style  Guide”  

Page 6: 简单中的不简单,iPhone应用开发实践总结:《社区类iPhone应用开发的技术实践》| 麻麻帮 陈剑飞

工欲善其事,必先利其器  •  Xcode的键盘快捷  

–  Command  +  Up  –  Command  +  L  –  Shia  +  Command  +  F  –  Command  +  F  

•  Xcode  标记工具  –  #pragma  mark  –  行标记    –  //TODO:  //FIXME:  //MARK:  //!!!:  //???:(从Xcode4开始写在{}内无效)  –  #warning  

•  -­‐Xcode辅助工具  –  Instruments  (Leak,  AllocaZon,  Zombie)  –  Analyze  

www.mamabang.com  

Page 7: 简单中的不简单,iPhone应用开发实践总结:《社区类iPhone应用开发的技术实践》| 麻麻帮 陈剑飞

“⼀一个程序员的职业修养”  

•  整洁代码  – 没有孤立的数字  – 短函数  – 不复制代码  

•  代码洁癖  •  阶段性重构的必要性  •  面向对象的思考  •  Modal-­‐View-­‐Controller  架构  

www.mamabang.com  

推荐阅读:    

Robert.  C.  MarZn  (著)  韩磊(译)  

人民邮电出版社    

 

Page 8: 简单中的不简单,iPhone应用开发实践总结:《社区类iPhone应用开发的技术实践》| 麻麻帮 陈剑飞

踩在巨人的肩膀上  

•  常见开源框架选择  – ASIH5pRequest  – SVProgressHUD  – SDWebImage  – TouchJSON  – EGORefreshTableHeaderView  

•  保持代码更新  (gitHub)  •  熟读源代码  •  改造合适自己的版本  

www.mamabang.com  

Page 9: 简单中的不简单,iPhone应用开发实践总结:《社区类iPhone应用开发的技术实践》| 麻麻帮 陈剑飞

社区类应用特点  

•  用户是内容的产生者  

•  服务器和手机端有大量数据交互  

•  用户对于刷新和等待的忍受度低  

www.mamabang.com  

产品设计对策  •  需要简化输入,图片上传,视频上传等  

•  支持横屏输入,语音输入  •  支持文字草稿,文字复制  

•  精简数据传输  •  本地缓存机制实现与更新策略  

•  异步与同步选择  •  长时间操作的提示分类  

Page 10: 简单中的不简单,iPhone应用开发实践总结:《社区类iPhone应用开发的技术实践》| 麻麻帮 陈剑飞

社区类应用特点  

•  大量页面跳转  

•  多数页面需要和服务器交互  

•  通知频繁  

www.mamabang.com  

技术实现  •  设计统⼀一的跳转方式  (程序内URL)  

•  在传统View  Controller基础上设计多个继承类,封装了大量与服务器同步交互或者异步交互的方法  

•  设计统⼀一的通知管理器,管理全局服务器通知,在每次与服务器的数据传输中,放置通知字段  

Page 11: 简单中的不简单,iPhone应用开发实践总结:《社区类iPhone应用开发的技术实践》| 麻麻帮 陈剑飞

实例一:瀑布流实现中的若干问题  

www.mamabang.com  

•  UIScrollview  +  自定义View  

•  视频首帧图片延迟加载  

•  内存效率问题, 如何释放不需要显示的图片所占用的内存  

•  动态加载效果  

Page 12: 简单中的不简单,iPhone应用开发实践总结:《社区类iPhone应用开发的技术实践》| 麻麻帮 陈剑飞

实例二:有关通知的设计  

•  三个层次的通知  –  Push  NoZficaZon  – 程序内通知  – 通知中心  

•  与服务器每次交换数据都含有通知结构  {name=“xxx”,  code=“xx”,  data=“”,  noZf=“”}  

 •  每个页面都含有通知显示  

www.mamabang.com  

Page 13: 简单中的不简单,iPhone应用开发实践总结:《社区类iPhone应用开发的技术实践》| 麻麻帮 陈剑飞

关于  Memory  Warning    

•  图片和视频占用内存多,Memory  Warning是经常的,在viewDidUnload中释放非必须资源,注意,该资源应该能被viewDidLoad中重新创建,不然不应该释放  

•  尽量用真机测试,不然无法发现潜在memory  warning  问题  

•  如果在程序中可预见性的会产生大量autorelease对象,应该自建autorelease  pool  

www.mamabang.com  

Page 14: 简单中的不简单,iPhone应用开发实践总结:《社区类iPhone应用开发的技术实践》| 麻麻帮 陈剑飞

   

 谢谢    

[email protected]    

www.mamabang.com