蓝懿iOS 技术交流和心得分享16.1.2

  • Post author:
  • Post category:其他


我们在复习一些重要的东西:

1数据持久化的方式:1.归档 2.UserDefault 3.CoreData 4.sqlite

多线程:

1.不能在主线程中写耗时的操作 因为会导致主线程中系统代码晚执行  界面就会出现卡死现象严重影响用户体验度

2.不能在子线程中修改页面 要回到主线程中去修改

耗时操作有哪些:1.大量运算  2.处理大文件 3.网络相关 4.睡眠代码

dispath

开启线程的方式有三种:

1.NSThread:

2.GCD: 中央任务分发 C语言支持 执行效率高 代码简洁

3.NSOperation:可以控制同时执行的线程数量 可以控制线程之间的关系

多线程可能会出现的问题

同步:不同时 让线程依次执行

异步:同时 多线程本身就是同时执行的 但是同时操作同一份数据的时候可能会出现问题 需要通过 线程同步 来解决

线程同步:三种方式:1.NSLock 2.NSCondition 3.同步代码块 synchronized

线程间通信 :通过 self performSelector实现线程间的通信

进程间通信:两个应用程序间的通信

在IOS开发中例如微博,QQ聊天界面中要显示大量的文字信息,这样需要计算出文字部分的尺寸,才能设计出合适的控件尺寸和位置。下面是IOS 7.0计算文本尺寸的方法。

– (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(NSDictionary *)attributes context:(NSStringDrawingContext *)context NS_AVAILABLE_IOS(7_0);

这是NSString的对象方法,一个字符串实例调用该方法时,方法会通过传入的参数返回一个CGRect型数据,这个数据的size就是此时字符串显示成文本的尺寸。

size:限制尺寸,用于计算文本绘制时占据的矩形块,例如微博开发中size.w不超过scence.w。可以将size.y设置为无限大MAXFLOAT以便于显示所有文字内容。

option:文本绘制时的附加选项。

有四种类型:1.NSStringDrawingTruncatesLastVisibleLine 2.NSStringDrawingUsesLineFragmentOrigin

3. NSStringDrawingUsesFontLeading

4. NSStringDrawingUsesDeviceMetrics

通常使用NSStringDrawingUsesLineFragmentOrigin,如果options参数为NSStringDrawingUsesLineFragmentOrigin,那么整个文本将以每行组成的矩形为单位计算整个文本的尺寸。

attributes:将文本UIFront存入字典传到这里。例如, NSDictionary *dict = @{NSFontAttributeName : font}

context:context上下文。包括一些信息,例如如何调整字间距以及缩放。最终,该对象包含的信息将用于文本绘制。该参数可为 nil 。

1.[ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key resultLabel.出错原因:sb控件和代码关联出错解决方案:找到相对应的页面的黄色圆点(ViewController)在此上面右键 删除 黄色叹号2.<__NSArrayM: 0x7c0320b0> was mutated while being enumerated.出错原因:forin循环时修改了数组 但继续循环了解决方案: 修改数组后 加break或return3.-[__NSArrayM objectAtIndex:]: index 3 beyond bounds [0 .. 0]’出错原因:数组角标越界解决方案:角标的取值 要小于数组的count4.-[ViewController addZombX]: unrecognized selector sent to instance 0x79174e00’出错原因:在ViewController中找不到方法

解决方案:在某个类中没有实现这个方法  或者是对象类型错了

5.This application is modifying the autolayout engine from a background thread出错原因:子线程中修改了界面解决方案:回到主线程修改就可以了6.An

instance 0x7fb6dad221e0 of class Mouse was deallocated


while key value observers were still registered with it


原因:监听了一个已经被释放的对象

解决方案:在适当的位置删除监听


学习ios  重要还是要理清楚思路  在做或者看老师代码的时候 自己多想想为什么  不要自己看着就抄       另外还是要推荐一下 蓝懿IOS这个培训机构  和刘国斌老师刘国斌老师还是很有名气的,听朋友说刘老师成立了蓝懿iOS,,老师讲课方式很独特,能够尽量让每个人都能弄明白,有的比较难懂的地方,如果有的地方还是不懂得话,老师会换个其它方法再讲解,这对于我们这些学习iOS的同学是非常好的,多种方式的讲解会理解得更全面,这个必须得给个赞,嘻嘻,还有就是这里的学习环境很好,很安静,可以很安心的学习,安静的环境是学习的基础,小班讲课,每个班20几个学生,学习氛围非常好,每天都学到9点多才离开教室,练习的时间很充裕,而且如果在练习的过程中有什么困难,随时可以向老师求助,不像其它机构,通过视频教学,有的甚至学完之后都看不到讲师本人,问点问题都不方便,这就是蓝懿与其它机构的区别,相信在刘国斌老师的细心指导下,每个蓝懿学员都能找到满意的工作,加油!

写博客第八十四天;

QQ:565803433



版权声明:本文为RenJieLi001原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。