ios实训总结

2024-07-11

ios实训总结(精选4篇)

篇1:ios实训总结

下列简化写法是IOS6.0以后的新写法

NSNumber

//简化前的写法:

NSNumber *value1;

value1 = [NSNumber numberWithInt:12345];

value1 = [NSNumber numberWithFloat:123.45f];

value1 = [NSNumber numberWithDouble:123.45];

value1 = [NSNumber numberWithBool:YES];

//简化后的写法:

NSNumber *value2;

value2 = @12345;

value2 = @123.45f;

value2 = @123.45;

value2 = @YES;

//装箱表达式也可以采用类似的写法:

NSNumber *piOverSixteen1 = [NSNumber numberWithDouble: ( M_PI / 16 )];

NSString *path1 = [NSString stringWithUTF8String: getenv(”PATH“)];

//可以分别简写为:

NSNumber *piOverSixteen2 = @( M_PI / 16 );

NSString *path2= @( getenv(”PATH“) );

//对于字符串表达式来说,需要注意的是表达式的值一定不能是NULL,否则会抛出异常,

NSArray

//对于NSArray的初始化来说,有非常多的写法,这里就不再一一罗列,我们直接看新的写法

NSArray *array;

array = @[]; //空数组

array = @[ a ]; //一个对象的数组

array = @[ a, b, c ]; //多个对象的数组

//编译器在处理时:

array = @[ a, b, c ];

//编译器生成的代码:

id objects[] = { a, b, c };

NSUInteger count = sizeof(objects)/ sizeof(id);

array = [NSArray arrayWithObjects:objects count:count];

//注意,如果a,b,c对象有nil的话,运行时会抛出异常,这点和原来的处理方式不同,编码的时候要多加小心,

NSDictionary

//同样,对于字典这个数据结构来说,有很多种初始化的方式,我们来看新的写法:

NSDictionary *dict;

dict = @{}; //空字典

dict = @{@”key1“:@”value1“ }; //包含一个键值对的字典

dict = @{ @”key1“ : @”value1“, @”key2“ : @”value“, @”key3“ : @”value3“ }; //包含多个键值对的字典

//采用上述写法构建的容器都是不可变的,如果需要生成可变容器,可以传递-mutableCopy消息。例如

NSMutableArray *mutablePlanets = [@[

@”Mercury“, @”Venus“, @”Earth“,

@”Mars“, @”Jupiter“, @”Saturn“,

@”Uranus“, @”Neptune“

] mutableCopy];

NSMutableDictionary *dic=[@{ @”key1“ : @”value1“, @”key2“ : @”value“, @”key3“ : @”value3“ } mutableCopy];

篇2:ios实训总结

IO分类输入 和 输出 流节点流 和 处理流字节流(byte)和 字符流(char)

输入流

字节流

抽象基类 InputStream

读取文件的 FileInputStream

缓冲流 BufferedInputStream

读取各种java基本数据类型的 DataInputStream

读取对象 ObjectInputStream

字符流

抽象基类 Reader

读取文本文件的 FileReader

实现缓冲的 BufferedRead 读取一个行 readLine();newline()输出流

字节流

抽象基类 OutputStream

写文件的 FileOutputStream

缓冲输出流 BufferedOutputStream

写各种java基本数据类型的 DataOutputStream

写对象的 ObjectOutputStreamwriteObject(Object obj);字符流

对象的序列化

一个对象所属的类如果实现java.io.Serializable

篇3:IOS最新学习总结

2013-2-20

框架是一种聚集在一个单元的部件集合,包含头文件、库、图像、声音文件等。

苹果公司将Cocoa、Carbon、QuickTime和OpenGL等技术作为框架集提供。Cocoa是乔帮主NextStep致力开发的一款强大的用户界面工具包。其中Cocoa包括Foundation和AppKit、还有一个支持框架的套件,含Core Animation和Core Image(精彩功能)。Foundation框架处理的是用户界面之下的层(layer)中的特性,例如数据结构和通信机制;AppKit框架处理用户界面层的特性。

@class ****告诉编译器,只需要知道****是个指针类型就够了,能够减少编译时间,通常用在包含复合对象的复杂类中

#import ****使得头文件具有依赖关系,引用该头文件的类需要知道该文件对应类的实际变量的配置,该头文件变动时,引用该头文件的文件统统需要重新编译,通常在子类继承父类时,需要包含父类头文件

篇4:ios项目总结ppt

做项目前:

零面向对象实际项目经验,更不用说透彻理解design pattern

零iOS实际项目经验

只懂一点点的C和汇编代码,其它如java、ruby、php、HTML5一点不沾边,可以说是不属于互联网的业余玩家

项目的情况:

做项目过程中,客户需求变化极其频繁和巨大,对代码结构的robust是一大挑战。虽然本人特别讨厌需求变动,但是在外,身不由己

Universal项目,即是iPhone + iPad 的一个项目

基本上这个项目涉及到了iOS的方方面面,麻雀虽小,但是五脏俱全

关于程序结构设计

尝试用面向对象的方式去设计结构,但设计的时候流于形式,根据现有的一些best practice依葫芦画瓢,但实际上只有实践了才知道,比如:

1. 属性: 什么时候用和为什么用属性、如何保持属性私有、self.的使用,属性的内存释放;

2. 成员变量和属性的区别

3. 方法:什么时候用类方法和对象方法

4. 好的设计真的是“增之一分则太长,减之一分则太短”;好的设计关系到以后重构的方便性

5. 解耦设计:对象之间如何通讯,如何传值,如何回传,如何用好notification、delegate、KVO;如何保持对象的纯洁(不受玷污)

6. MVC中的M和C分离,一直觉得自己做的项目是小项目,而且一直认为过于注重结构,会增加代码量,但是实际上项目不分大小,好的设计:

能随时应对客户的需求变化

能自己看得懂自己写的代码(改的多了,都看不懂自己的代码了,这是最悲催)

回归测试,一旦客户需求改变,乱糟糟的代码更加乱,这样回归基本上是需要全部。好的设计可以把客户需求改变带来的回归测试降低到最低

关于面向对象设计

之前从没有面向对象设计的经验,所以第一次从这种角度去解决问题。“实践出真理”,无论你平时看多少书,如果没有实践过,真的`是无法体会面向对象设计的:

一切从面向对象出发设计:类、对象、(私有)方法、(私有)属性

所谓面向对象,就是根据现实世界中客观存在的事物(即对象)出发来构造软件系统

只有真正从面向对象去设计,几个月甚至几年后,你才能复盘你的代码。以前一直觉得代码复盘如同围棋复盘绝对是天才才有的本领,现在才明白,其实关键是:你要清楚的知道你的代码用在了哪里,为什么用

从面向对象出发,不要觉得一个功能很简单一个方法就搞定,尽量用面向对象去考虑。这是做项目过程中犯的最大的错误

关于ARC

我是项目做了1个月后,才决定把项目从MRC转到ARC,现在回头看看,当初真实明智,因为在第一个月,内存管理上的问题和处理让我很头疼也很花时间。关于ARC

没有想象中的会比MRC性能差,ARC不是JAVA的垃圾回收,性能其实与MRC基本一致

ARC中没有明确的release操作,这时更需要注意内存管理,比如在一个Controller中使用Gyro sensor的时候,这种操作是绝对不能赋值给局部变量的:[[CMMotionManager alloc]init]

虽然ARC似乎能为你做很多事,但是有些事情自己解决还是自己解决,比如当不需要用Gyro sensor时,_motionManager = nil(此时如果不设置,则startDeviceMotionUpdatesToQueue中的更新会一直进行);

总之,对于ARC,难得糊涂中要“时刻保持觉醒”

关于Perfomrance设计

Coding真的是一点都来不得马虎,以前一直觉得iOS性能强大,无须担心性能,但是项目做下来,一大痛苦之处就是性能不够:

应用程序、UIViewController和UIView的生命周期的认识如果不十分清楚,就很容易造成性能瓶颈

大量的UIView插入移除操作会导致性能问题

UITableView和UIScrollView导致滑动不顺畅的best practice

关于知识点

成为一名优秀Programmer需要丰富的经验和知识面,但是知识永远是学习不完的,所以要抓核心和基本,个人觉得以下几个知识点是iOS开发必须的。至于有些比如CoreText、CoreImage等,其实等到需要用时再去学习也来得及。

内存管理,MRC和ARC

多线程,iOS下有多种多线程实现方式,什么都应该了解一下,但是除了dispatch需要精通,其它只需要看懂 (dispatch效率最高,使用最方便)

数据库,无论是Core Data,FMDB还是基本的Sqlite,万事不离其中,掌握Sqlite和SQL基本语法是必须的

UIViewController、UITableViewController 和应用程序的生命周期

看似简单但是很有深度的View之间的转场处理,因为涉及到大量生命周期,如presentModalViewController, presentViewController, pushViewController, addSubview, removeFromSuperview, self.view....

网络处理相关的,如何请求JSON数据,如何HTTP GET和POST

旋转处理,特别是iOS4、iOS5、iOS6的不同处理

Debug的能力

基本的设计模式:MVC、delegate、notification、target-action

面向对象的核心思想,例如:不要以用户无法使用或不感兴趣的东西扰乱类的公有接口、类之间应该零耦合、把不相关的信息放在另一个类中

不重复造轮子

这个也不例外,iOS下的开源framework都太多了,基本上你需要的都能在Github或者Stackoverflow上找得到,所以平时:

不要做井底之蛙,平时多了解开源的框架

框架适合就行,就像争论AFNetwork和ASIHttpNetwork更棒没有意义的。写程序的有两类人,一类人追求技术极致,一类人技术只是实现产品的一种手段,我就是后面这个

关于开源框架的学习

这世界好的开源框架太多了,给我都看不完,所以需要选择,就像读书不在于都多,而在于读精,个人推荐如下。

Three20 (其实我是不推荐的,因为它过时了,但是因为淘宝客户端用到)

AFNetwork

MBProgressHUD

SDWebImage

关于Continuous Improvement

Six sigma中提到了持续改进,我们的能力提高也是这样。通过读好的开源框架是最好的进步方式。如何读开源框架,我们读开源框架的目的:

其中的花式写法我们只是了解,不是我们的目的

了解作者写框架的思路

上一篇:争做优秀青年发言稿下一篇:姓氏文化论文