effective tips

# iOS下常用类库整理

网络处理  AFNetWorking  Alamofire

数据库    fmdb          sqlite.swift

图片异步加载 sdwebimage  kingfisher

分享      ShareSDK

菊花君    MBProgressHUD

轮播      SDCycleScrollView  自己封装吧

json解析  MJEXension    SwiftJson

视频      IJKMediaplayer

推送      极光

总结学习学习Effective Objective-C 2.0  编写高质量iOS与OS X代码的52个有效方法

1. 消息与函数调用 区别

oc 中消息型语言与函数调用  oc其运行的代码由运行环境决定  函数调用 由编译器决定

举例说明多态情况下: oc                    运行时不管是否多态在运行时去查找这个方法

函数   是多态的话会运行时按照虚方法表来查到底要执行的方法

明白oc中所有的对象分配是在堆上的,不是在栈上的,延用c  语言的方式

NSString    astackstring  错误    而只能这样使用NSString  *str; 去手动分配

2.内存上面的问题

分配在堆上的对象等需要手动管理  栈上的会在弹出时自动清理  如基本类型的变量 包括一系列CG开头的

oc中将内存管理抽象出来,不需要用malloc  和 free 分配释放 而去使用引用计数的方式来管理

3.头文件中尽量少引用其他头文件,说不定就会造成头文件引用

@class  来标明其它类属性  优雅解决

使用协议呢 将其放在单独的文件更好

4.多用类型常量少用预处理

a.h中预定义 了个  #define  Max    8  那么有b.h 引入这个a.h会把 所有Max 都会换成这个的  且预处理的不含类型信息(缺点)

使用  static  const  double  max = 8 这种方式会更合适点

使用const标记的 , 想要对它修改 编译就会让它报错

如果不加static ,编译器会为其创建一个外部符号  如果另一个类中也声明了这样的常量 max 编译器会给出错误提示

用static这个可以来标记这种变量命名一样是否可以在多个类中使用

加了 就不会给他创建一个外部符号,来表示 这个常量就是在本类使用的

static  const  修饰的只会在编译单元内 私有这样来说比较通俗(什么时编译单元内呢, 实际就是.m文件的东西都属于编译单元)

定义这些常量的位置讲究, 是否公开这个常量  不公开  放在实现文件    这样做会更好

命名规范加类名前缀来避免空间 上的重名冲突

如通知的典范,通知名字字符的定义  .h  中  extern  NSString  *const  eocstring;  .m NSString  *const    eocstring = @“窗口变化饿了”

怎么看常量定义: 从右向左解读  eocstring 常量 什么样的常量  是一个指针, 这个指针指向nsstring

extern  关键标识的常量 会放在 全局符号表中  只能定义一次,在实现文件定义好了过后  编译器会在数据段为这个字符串分配存储空间

这种方式会让编译器来确保常量值不变 ,且不管在哪个类中定义的这个 所有地方都可以用

5.用枚举的时机 : 状态、选项、状态码

enum  ECname:NSInteger{

ECsucceed =  1,

ECerror,

};

//某种状态可以组合  的方式比如在使用到 animation  选项的时候多种状态组合实现

enum  ECtype:NSInteger{

ECnone = 0 ,

ECsucceed = 1<<0,  //00000001

ECperfect= 1<<1,  //00000010  00000011  3

};

typedef enum  ECtype    ectype;

ectype    atype = ECsucceed | ECperfect ;

//这种不能判断用与ecnone为0这种 与符号为0嘛

if ((atype & ECsucceed )  && (atype & ECperfect) ){

NSLog(@"开启完美 成功模式");

}

6.关于runtime机制的理解

先说原理不好理解,因此先说说它能干什么

1.  如果是在程序运行过程中 , 希望动态创建一个类(比如kvo底层就是基于这个特性)

2.程序运行过程中希望动态的生成一些属性或者方法 包括修改

3.遍历一个类的所有成员变量和方法 ,如一个类的属性方法特别多的时候

//这个东西 可以用语深层次开发框架

如:在归档的时候

-(void)encodeWithCoder:(NSCoder )encoder {

unsigned int count = 0;

Ivar ivars = class_copyIvarList([PYPerson class], &count);

for (int i = 0; i

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,718评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,683评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,207评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,755评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,862评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,050评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,136评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,882评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,330评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,651评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,789评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,477评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,135评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,864评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,099评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,598评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,697评论 2 351

推荐阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,692评论 0 9
  • 第1章 熟悉Objective-C 第1条 了解Objective-C语言的起源 Objective-C是一种“消...
    __silhouette阅读 633评论 0 4
  • 1.项目经验 2.基础问题 3.指南认识 4.解决思路 ios开发三大块: 1.Oc基础 2.CocoaTouch...
    阳光的大男孩儿阅读 4,971评论 0 13
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,135评论 30 470
  • 条件:1、iOS 8及其以上操作系统2、OS X Yosemite 以上操作系统 步骤:1、手机通过USB连接上电...
    Visitor阅读 2,149评论 0 1