iOS复习(二)

app的启动流程

进入main函数,在main函数中执行了 UIApplicationMain这个方法,这是ios程序的
入口

int UIApplicationMain(int argc, char argv[], NSString principalClassName, NSString *delegateClassName)

argc、argv:ISO C标准main函数的参数,直接传递给UIApplicationMain进行相关处理即可

principalClassName:指定应用程序类,该类必须是UIApplication(或子类)。如果为nil,则用UIApplication类作为默认值

delegateClassName:指定应用程序类的代理类,该类必须遵守UIApplicationDelegate协议

此函数会根据principalClassName创建UIApplication对象,根据delegateClassName创建一个delegate对象,并将该delegate对象赋值给UIApplication对象中的delegate属性

UIApplication对象会依次给delegate对象发送不同的消息,接着会建立应用程序的main runloop(事件循环),进行事件的处理(首先会调用delegate对象的application:didFinishLaunchingWithOptions:)

程序正常退出时这个函数才返回。如果进程要被系统强制杀死,一般这个函数还没来得及返回进程就终止了

tableview的优化

  1. cell的重用
我们应该在cell显示出来后再执行,可以在tableView:willdisplayCell:forRow中进行数据绑定
willdisplayCell在tableview展示之前就会调用,此时cell实例已经生成,所以不能改变cell的结构,只能改变cell的UI的一些属性

2.cell的高度计算

1.定高 高度是固定的
self.tableview.rowHeight = 88
也可以在代理里面改变高度 注意 如果写了代理方法  上面的rowHeight将无效

2.动态高度(就是高度不确定)
自从ios8以后就有了 self-sizing cell 的概念,cell可以自己计算高度,使用self-sizing必须满足三个条件

  1. 使用autolayout布局 上下左右都要有约束关系
    2.指定tableview的estimatedRowHeight属性的默认值
    3.指定tableview的rowHeight为UITableViewAutomaticDimension
    这是 在满足这些条件后 并且 cell上的 ui不会根据 需求 hidden的时候 可以用

如果和微博 或者朋友圈是的 需要 有图片加载图片 并且位置关系 会变的情况 上述方法不可行

3 计算并缓存高度
类似于朋友圈
这时候的高度 需要计算 并且计算过要缓存起来 不能每次都去计算 这样会造成掉帧现象
一.先创建一个 高度类 各个控件的高度 以及和上个控件之间的距离

class RowHeightModel: NSObject {
  var topHeight: CGFloat = 135
  
  
  var bottomHeight: CGFloat = 0
  var commenTop: CGFloat = 0
  var commentHeight: CGFloat = 0

  var contentHeight: CGFloat = 0
  var contentTop: CGFloat = 0
  
  var likeHeight: CGFloat = 0
  var likeTop: CGFloat = 0
  
  
  var imageHeight: CGFloat = 0
  var imageTop: CGFloat = 0
  var imageW: CGFloat = 0
  
  var askInfoHeight: CGFloat = 0
  var askInfoTop: CGFloat = 0
  
  var replyheight: CGFloat = 0
  var replyTop: CGFloat = 0
  
  var pdfTop: CGFloat = 0
  var pdfHeight: CGFloat = 0
  
  override init() {
    super.init()
  }
  
}

类似于这个样子
然后在网络请求结束后 根据model计算每一个model需要占的高度

这时候又要说了 刚进去会不会很慢 因为需要计算

这时候用到网络缓存 具体可以去看yycache

进页面的时候先去取缓存数据 没有的话 等待网络请求
有缓存数据的话 显示缓存数据 再刷新就好

3.渲染

4 减少视图的数目
5 减少多余的绘制操作
6 不要给cell动态的添加subView(这需要绘制)

7 离屏渲染
// 下面的情况会触发离屏渲染
为图层设置遮罩
将图层的masksToBounds属性设置为true
将图层layer.allowsGroupOpacity属性设置为true和layer.opacity小于1.0
为图层设置阴影
具有layer.cornerradius 的图层
使用CGContext在DrawRect方法绘制 大部分情况下会导致离屏渲染,甚至仅仅是一个空的实现

ios9之后 uibutton设置圆角会触发离屏渲染,而UIImageView里面的png图片设置圆角不会触发离屏渲染,如果设置其他阴影效果之类还是回触发离屏渲染的

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

推荐阅读更多精彩内容

  • 基本数据类型: 数字 字符串 布尔 null undefined引用数据类型: 对象 数组 函数 等等 现象
    7月7日晴i阅读 177评论 0 1
  • 总是很羡慕有人讲话非常有意思。是因为自己实在不是那样的人。 还做培训工作的时候,每次问学员最喜欢哪位老师的课程,他...
    墨幽雨阅读 151评论 0 1
  • 拯救大兵瑞恩观后感 当那个德国兵从厄本身边经过时,我觉得我需要勇敢当美国兵坑杀投降的德国兵的时候,我觉得人类需要互...
    儿歌阅读 186评论 0 1
  • 当我们的现况与预期不相符时,很容易产生焦虑。我觉得担忧与不满都是人的正常反应。人与人的区别只是在于,是否接受现实。...
    袁春楠阅读 217评论 0 0