iOS开发中的技巧, 注意事项
以后开发中常用的知识和小技巧:
需要掌握的第三方框架:
网络请求类:AFNetworking(必须)、ASIHTTPRequest(和可能会用到,尽量掌握)
图片加载类:SD WebImage(必须)
数据库:FMDB
瀑布流:第三方和系统自带的.PS:系统自带的瀑布流只支持iOS6或者以上系统
抽屉效果:有多个如:MMDrawerController
下拉刷新:第三方和系统自带的,PS:系统自带的UIRefreshControl只支持iOS6或者以上系统
UIWebView主要是于JS的交互
ARC是iOS5之后推出的功能:
如果你的项目使用的是MRC,则为ARC模式的代码文件加入-fobjc-arc.
如果你的项目使用的时ARC,则为MRC模式的代码文件加入-fno-objc-arc
分享到第三方应用:ShareSDK或者是友盟,第三方开放平台的注册
地图:百度地图API,高德地图API
网络判断:Reachability
数据统计:TalkingData(了解,知道有这么个东西,以后用的时候查询)
如何进行程序的版本迭代
1、DLog的使用,DLog在DeBug模式下会输出信息,包括方法名,行数以及你想要输出的内容。定义如下(包括ELog):
#ifdef DEBUG
#ifndef DLog
# define DLog(fmt, ...) {NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);}
#endif
#ifndef ELog
# define ELog(err) {if(err) DLog(@"%@", err)}
#endif
#else
#ifndef DLog
# define DLog(...)
#endif
#ifndef ELog
# define ELog(err)
#endif
#endif
2、3.5英寸和4.0英寸屏幕的判断,用来做3.5和4.0寸屏幕的适配,iPhone5和iphone5s是4.0寸屏幕
#define iPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO)
3、根据版本不同,设置不同的文本对齐格式,iOS6.0之后和iOS6之前设置文本的对齐方式的语句不同.
// 当前系统支持的最小版本
__IPHONE_OS_VERSION_MIN_REQUIRED
// 当前系统指出的最大版本
__IPHONE_OS_VERSION_MAX_ALLOWED
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 60000
#define LOLabelAlignmentCenter NSTextAlignmentCenter
#else
#define LOLabelAlignmentCenter UITextAlignmentCenter
#endif
可以通过以下语句获取当前系统的版本
[[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0(判断当前系统是否大于7.0,可以用来做iOS6和iOS7的适配)
4、给一个RGB值得到对应的UIColor
#define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]
5、iOS7导航栏和状态栏的定制
http://www.cocoachina.com/applenews/devnews/2013/1104/7287.html
iOS7和iOS6的适配
http://blog.csdn.net/liulushi_1988/article/details/14105187
6、iOS谓词 NSPredicate,知道如何去匹配邮箱,网址
http://blog.csdn.net/long11995563/article/details/9399891
7、代码保护,比如在从数组中取元素的时候,首先判断数组的元素个数,然后在从数组里面取元素;另外从服务器返回的数据,比如字典,在使用之前,首先判断取出来的数据是否是null(因为在服务器端,如果数据库里面没有给默认值的话,可能是空,使用isEqual: [NSNull null]来判断)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次 .NET某固高运动卡测试 卡慢分析
· 微服务架构学习与思考:微服务拆分的原则
· 记一次 .NET某云HIS系统 CPU爆高分析
· 如果单表数据量大,只能考虑分库分表吗?
· 一文彻底搞懂 MCP:AI 大模型的标准化工具箱
· 7 个最近很火的开源项目「GitHub 热点速览」
· DeepSeekV3:写代码很强了
· 记一次 .NET某固高运动卡测试 卡慢分析
· Visual Studio 2022 v17.13新版发布:强化稳定性和安全,助力 .NET 开发提
· C# LINQ 快速入门实战指南,建议收藏学习!