主页

iOS代码规范

为什么要有代码规范?对于团队,如果代码风格不统一,阅读或修改同事的代码会非常困难,造成潜在的风险。 对于个人,代码规范是对自身编码习惯的一种监督,如果没有这种监督,有时候因为偷懒,会写出难看的代码,时间长了自己都看不懂。这样对于代码的维护性是不利的。 代码规范的内容?代码规范包含的范围十分广泛。从一个变量的命名到一个类的设计,我觉得都属于代码规范的范畴。从实践的角度,可以把代码规范分成两个部分: 第一部分是规则,即一定要这么做。这里面没有对错,但需要统一。包含变量的命名、函数的命名、模块的组织、代码块的组织、宏、枚举、常量的声明、函数的粒度。 第二部分是风格,即一种模式化的代码设计结构。我们实现某个功能时,往往不止一种实现方式。每一种实现方式没有绝对的高低之分,不同角度的解读,就会有不同的偏好。所以这个层面上的代码规范,只能求同存异。但是不管怎样,每个人必须要有一致性的风格。就像不同的小区可以有不同的风格,但同一个小区只能有一种设计风格。风格包含代码设计中的抽象概念,比如接口、继承等等。

测试Json效率和XML效率

tips:把项目中的解析json的sbjson ,网上提到的JsonKit和apple提供的自带json解析方法进行比较所解析的json是来自项目当中服务返回的商家列表信息具体如下图

LCBaseViewController相关

简介该基类参考原先项目中BaseViewController等几个类 进行修改 功能暂时满足目前项目需求 日后更新会根据项目迭代中提出的需求在进行修改 ##属性和函数说明 LCViewControllerShowType:viewController出现的方式 具体分为123LCViewControllerShowTypePush (pop/push方式)(默认)LCViewControllerShowTypePresent (present/dismiss方式)LCViewControllerShowTypePresentBasic (作为没有登录的情况下,登陆界面返回按钮 跳转到首页的凭据)

LCDataManager相关说明

####### 文章参照cucuz的数据存储Library类 的目的 方便项目当中数据的存储,提供简单的接口供使用,根据存储的位置划分可以分为缓存和本地存储,其中包括 NSArray, NSDictionary, NSData,NSString,UIImage 等常用数据类型,自定义Object(自行实现NSCoding协议) 类的函数介绍 类初始化(单例) 1LCDataManager *dataManager = [LCDataManager shareManager]; 首先,我们创建一个对象,下文将以它作为存储的一个依据 ##Cache block

地图开发总结

###坑爹的高德项目中地图原来用的高德sdk,其实我不知道当时为什么就用了高德,但既然用了,那么就在此基础上开发吧。可是写着写着,问题就来了: 问题链接。虽然这个问题不是什么太大的问题,但保不准以后还会遇到什么别的坑,而且以高德的效率,短期内肯定不会解决的。那为什么还要用那个sdk呢?好像我们用到的功能苹果自带的MapKit都能实现啊,而且高德官网上的合作伙伴(携程、美团)也是用的原生的MapKit(从地图默认加载背景就可以看出来)。后来只花了一点点时间就切换到苹果的MapKit(API是一样的),目前还没发现什么bug。 ###坐标转换之中国特色因为不用高德了,所以当前位置经纬度就用CoreLocation来获取。可是当你把获取的经纬度放到MKMapView中显示,位置竟然有偏移,而且还不小。 这是苹果的bug吗?不是,是有关部门的功劳。我们只有一个地球,所以地球上每个点的经纬度是固定的,国际上有个通用标准,简称国际标准。CoreLocation取到的经纬度符合国际标准。 可是在国内,由于国家安全,有关部门制定了一套新的标准,简称国家标准。只要是在国内发行的地图(包括电子地图),都要按国家标准来,不然就是非法的。所以苹果手机中的国内地图肯定也是改良过的。 我拿着国际标准的经纬度放到改良过的符合国家标准的地图中,显然会发生偏移。 解决办法就是将国际标准的经纬度转换成国家标准的经纬度。算法是现成的(以前用高德sdk获取当前位置的经纬度本来就是国家标准的,所以没事。)

LCMenuView简介

简介筛选功能在慧驾项目中用的比较多,所以抽取出来,以便简化代码,便于维护 类与方法说明LCMenuView菜单标题相关,与此次迭代UI相同,以后根据UI的变更进行修改,提供方法和属性如下: - (id)initWithFrame:(CGRect)frame // segmentWidths:(NSArray *)widths // 每个segment的宽度,类型NSNumber segmentTitles:(NSArray *)titles // 标题,类型NSString popups:(NSArray *)popups // 弹出菜单,类型LCMenuPopupView parentView:(UIView *)parent; // menu的parentView