iOS 小知识点(二)

1、日常笔记(二)

是转载,来源太广找不到出处了!

NSRunLoop 和NSOperationQueue

NSRunLoop 是所有要监视的输入源和定时源以及要通知的注册观察者的集合.用来处理诸如鼠标,键盘事件等的输入源。每一个线程拥有自己的RunLoop有系统自动创建。你不应该自己去创建,只能获取。一般不会用NSRunLoop,因为它不是线程安全的。一般都用CFRunLoop,这个是线程安全的,是一种消息处理模式,我们一般不用进行处理。
NSOperationQueue时一个管理NSOperation的队列。我们会把NSOperation放入queue中进行管理。


内存管理和优化

原则:【黄金法则】
1.1 谁创建,谁释放(类似于“谁污染,谁治理”)。如果你通过alloc、new或copy来创建一个对象,那么你必须调用release或autorelease。换句话说,不是你创建的,就不用你去释放。例如,你在一个函数中alloc生成了一个对象,且这个对象只在这个函数中被使用,那么你必须在这个函数中调用release或autorelease。如果你在一个class的某个方法中alloc一个成员对象,且没有调用autorelease,那么你需要在这个类的dealloc方法中调用release;如果调用了autorelease,那么在dealloc方法中什么都不需要做。
1.2 除了alloc、new或copy之外的方法创建的对象都被声明了autorelease

优化:
在收到内存didReceiveMemoryWarning的警告时,释放掉一些不再需要的资源,注意编码规范,如一些变量不使用需要及时的释放。避免是占用太多的内存空间,有时需要用空间去换取时间,尽量使用一些高效的算法和数据结构节约内存空间。最后使用一些内存检测工具和代码的静态分析查找内存泄漏和分配(instrument,leaks,allocations)


tableview的优化:

1.1 正确的复用cell。
1.2 减少在返回每个cell里面的处理逻辑和处理时间。尽量将数据进行缓存和复用。
1.3,尽量减少处理加载和计算的时间,不阻塞UI线程。
1.4,尽量使用绘制每个cell。
1.5,设置每个cell的opaque属性
1.6,尽量返回每行固定的height。
1.7,在每个cell减少图形效果。
1.8,分段加载数据。

开发App的步骤,开发者账号,发布app到appstore

证书分两种:开发者证书、发布者证书。前者开发时使用,后者发布使用
(1) 模拟器调试无需代码签名;真机调试需开发者证书代码签名;发布时需发布证书签名
(2) 代码签名需要:证书+私钥,
(3) 真机调试时要求在设备上安装描述文件(provision profile),该文件包含信息:调试者证书
授权调试设备清单应用ID一个应用对应一个描述文件


类继承,类的扩展(extension),类别(category)

category 可以在不获悉,不改变原来代码的情况下往里面添加新的方法,只能添加,不能删除修改。并且如果类别和原来类中的方法产生名称冲突,则类别将覆盖原来的方法,因为类别具有更高的优先级。类别主要有3个作用:(1)将类的实现分散到多个不同文件或多个不同框架中。(2)创建对私有方法的前向引用。(3)向对象添加非正式协议。 继承可以增加,修改或者删除方法,并且可以增加属性。
category和extensions的不同在于后者可以添加属性。另外后者添加的方法是必须要实现的。extensions可以认为是一个私有的Category。


app性能测试方式

通过Xcode提供的工具如Instrument,测试CPU,Mermory性能。也可以适用一些开源的自动化测试工具:如Frank,KIF等。


NSArray可以放基本数据类型不(int,float,nil)怎么放进一个结构体

NSArray 只能存放objective-c对象数据模型,这些基本数据类型需要先转化为NSNumber对象再存放进数组中。


常见的语言编码(utf-8,unicode,gb2312,gbk)

常见的语言编码有:

GB2312:简体中文编码,一个汉字占用2字节,在大陆是主要编码方式。BIG5:繁体中文编码。主要在台湾地区采用。 GBK:支持简体及繁体中文,但对他国非拉丁字母语言还是有问题。 UTF-8:Unicode编码的一种。

Unicode用一些基本的保留字符制定了三套编码方式,它们分别UTF-8,UTF-16和UTF-32。在UTF-8中,字符是以8位序列来编码的,用一个或几个字节来表示一个字符。这种方式的最大好处,是UTF-8保留了ASCII字符的编码做为它的一部分。UTF-8俗称“万国码”,可以同屏显示多语种,一个汉字占用3字节。为了做到国际化,网页应尽可能采用UTF-8编码。

常见的加解密方式(rsa,aes,md5)

常见的加解密方式有:
RSA:基于公钥和私钥的非对程加密算法。适用范围广。
AES:是一种对程加密的流行方式。加密涉及矩阵运算。
MD5:将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,


ios应用的调试技巧

1.如遇到crash,分析崩溃日志(symbolicatedrash工具的适用)保留崩溃版本的.dSYM文件
2.在 XCode 中进入断点管理窗口;然后点击右下方的 +,增加新的 Exception Breakpoint。
3.如遇到EXC_BAD_ACCESS,打开Scheme选项选择EditScheme。然后按图勾上Enable Zombie Objects和Malloc Stack那两项。
4.有效的日志管理。NSLog和加入一些开源的日志管理框架。
5.程序断点debug模式。


应用程序性能的调优

(转http://www.open-open.com/lib/view/open1365861753734.html

  • [ ] 1. 用ARC去管理内存(Use ARC to Manage Memory)
  • [ ] 2.适当的地方使用reuseIdentifier(Use a reuseIdentifier Where Appropriate)
  • [ ] 3.尽可能设置视图为不透明(Set View as Opaque When Possible)
  • [ ] 4.避免臃肿的XIBs文件(Avoid Fat XiBs)
  • [ ] 5.不要阻塞主进程(Don't Block the Main Thread)
  • [ ] 6.调整图像视图中的图像尺寸(Size Images to Image Views)
  • [ ] 7.选择正确集合(Choose the Correct Collection)
  • [ ] 8.启用Gzip压缩(Enable GZIP Compression)
  • [ ] 9. 重用和延迟加载视图(Reuse and Lazy Load Views)
  • [ ] 10.缓存,缓存,缓存(Cache,Cache,Cache)
  • [ ] 11.考虑绘图(Consider Drawing)
  • [ ] 12.处理内存警告(Handle Memory Warnings)
  • [ ] 13.重用大开销对象(Reuse Expensive Objects)
  • [ ] 14.使用精灵表(Use Sprite Sheets )
  • [ ] 15.避免重复处理数据(Avoid Re-Processing Data)
  • [ ] 16.选择正确的数据格式(Choose the Right Data Format)
  • [ ] 17.适当的设置背景图片(Set Background Images Appropriately)
  • [ ] 18.减少你的网络占用(Reduce Your Web Footprint)
  • [ ] 19.设置阴影路径(Set the Shadow Path )
  • [ ] 20.你的表格视图(Optimize Your Table Views)
  • [ ] 21. 选择正确的数据存储方式(Choose Correct Data Storage Option)
  • [ ] 22.加速启动时间(Speed up Launch Time )
  • [ ] 23.使用自动释放池(Use AutoRelease Pool)
  • [ ] 24.缓存图像(Cache Images-Or not )
  • [ ] 25.尽可能避免日期格式化器(Avoid Date Formatters Where Possible)
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342

推荐阅读更多精彩内容

  • 37.cocoa内存管理规则 1)当你使用new,alloc或copy方法创建一个对象时,该对象的保留计数器值为1...
    如风家的秘密阅读 827评论 0 4
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,081评论 1 32
  • 原文地址http://www.cocoachina.com/ios/20160323/15770.html 序言 ...
    独家记忆3997阅读 149评论 0 0
  • 风沙漫起的季节,紫苑躲在奶奶的房间里面漫无目的的翻检着草药,一边鼓起小嘴不住的嘟囔:“这个季节最讨厌了,每一次都只...
    chief风阅读 335评论 0 0
  • 人们都说: 老师是灵魂的工程师。 殊不知, 在青青校园, 每一个灵魂都是鲜活的, 孩子们用自己的言行碰撞着我们的灵...
    而今起阅读 453评论 2 4