iOS开发初学者详细总结

时间:2024.4.27

曾尝试webview嵌在tableview里,为了让webview跟tableview一起滚动,把webview的大小设为webview里的内容大小,让webview不出滚动条,从而能跟着tableview的滚动条一起滚。这样做的后果是每次webview都一次性渲染整个页面

基础篇

为什么对一个变量release后还要设为nil

对一个变量release后,这个变量指向的内存释放了,但这个变量本身没变,仍指向原来的内存地址。若这个变量在释放后被访问,或者被重复release,就会导致应用崩溃。设为nil后这个变量指向0×00,可以保证程序以后访问不到原先的内存地址,对nil进行release也没任何问题。

使用类成员时,前面加不加self.有什么区别

不加self.调用的是成员本身,加self.后实际上调用了其成员的get set方法。

例:

//.h

@property (nonatomic, retain) NSString *name

//.m

name = @"bang" //没有retain,随时会被释放

NSString *str = self.name //等于NSString *str = [self name];

self.name = @"bang" //等于[self setName:@"bang"]; 这时在set方法里retain了这个字符串

技巧篇

内存泄漏

可以通过xcode的编译工具Product-Analyze检查函数块范围内可能的泄漏点(外带会提示一些可能有的错误)。

用leaks工具监测出来的泄漏查找方法是跟踪其代码提示中出现的变量,经常这个变量是在提示的调用堆栈以外的地方泄漏的。若实在查不到,最终办法是重写这个变量的retain和release方法,debug,从调用堆栈看是谁retain了它而没有release。

要注意的是,用CFXXCreate(例如CFArrayCreate)生成的变量要用CFRelease释放。 数据存储

如无搜索需要,可以将一个数据对象直接序列化后存到sqlite,取出时直接反序列化为对象使用。序列化需要数据类实现NSCoding协议,实现encodeWithCoder和initWithCoder两个方法就行,若有多个数据对象,可以写个基类实现这两个方法,并在这里面利用反射枚举自身所有变量去encode和decode,一劳永逸,具体实现网上找找就有了。

组件篇

UINavigationController头尾显示隐藏

在用NavigationController去管理view的push和pop时,需要根据不同的view设置是否显示NavigationBar和ToolBar,一开始在错误的地方设置了,导致有时该显示NavigationBar和ToolBar时不显示的情况,后来发现在viewWillAppear上设置万无一失。别笑我土鳖,没好好去理解它整个流程,一直没发现。

- (void) viewWillAppear:(BOOL)animated{

[super viewWillAppear:animated];

[self.navigationController setToolbarHidden:NO];

[self.navigationController setNavigationBarHidden:NO];

}

UITableView游标式渲染

tableView的机制大概是:先定好总行数,某一行滚入视图范围时,回调一个函数去取view出来显示。这一行滚出视图再滚入时仍会继续回调这一函数取view。有这样的机制就是说无论你table里的数据有多少,都可以全部放入table中不用分页,因为不用一次性把所有数据都取出来,只在需要显示的时候根据游标去取对应的数据就行了。

可能这是APP组件很自然的方式不用说明,但在web上页面上的数据和元素都是要一次性载入内存的,做久了web,一开始没想到它这样的实现机制,导致我们走了不少弯路。 UIWebView渲染范围

UIWebView不是根据可视范围决定每次的渲染范围,而是根据自身控件的frame大小决定。

曾尝试webview嵌在tableview里,为了让webview跟tableview一起滚动,把webview的大小设为webview里的内容大小,让webview不出滚动条,从而能跟着tableview的滚动条一起滚。这样做的后果是每次webview都一次性渲染整个页面,内存占用多性能很差,而且在放大缩小这个webview时,渲染放大的整个页面更吃力,出现不能忍受的性能。解决办法是让webview定住高度为一整屏iphone的高度,限制了webview每次的渲染范围为可视范围,性能大好。带来的问题是无法随tableview滚动,但可以以其他方式优化体验。最近看到新版的ZAKER也是这样做的。

个人感觉篇

界面布局调整非常麻烦,让人怀念web了。界面描述方法XIB感觉晦涩难学,至今不会,没有CSS+HTML来得方便。

有编译器把关,少了像写js时多写or写错一个字符查半天的问题。

Object-C写起来各种变量函数和变量调用很长,没有js的短小精悍来得爽。

第一次编写涉及手动内存管理的程序,挺有意思,没想象中难,但有些内存管理导致的bug很难查。

虽然APP不像web那样随时更新,但也不像传统PC客户端升级那么麻烦,用户更新意愿更强,还是适合快速迭代的。

细节是可以决定成败,但得看你把什么定成细节。

最后,0 bug的程序不存在,极致是把最主要的事做好。done is better than perfect。


第二篇:IOS最新学习总结


Object-C学习

20xx-2-20

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

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

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

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

(-)实例方法:自己创建的大部分方法都是实例方法,这些方法将会在某个对象实例中运行; (+)类方法:这类方法属于类对象(而不是类的实例对象)并且通常用于创建新的实例;

更多相关推荐:
个人学习和工作情况总结

大学四年,于我而言是人生中非常重要的四年。在领导的关心和照顾下,我不断进步成长,在学习,工作,生活中都收获颇丰。现将我大学四年的学习和工作总结如下。学习方面我深知21世纪是知识爆炸的时代,知识改变命运,因此,我…

大一学习总结

春去秋来,日复一日,大一学年生活,虽然短暂,但我过得充实而快乐。转眼间,在大学已经呆了一年多了。记得刚进大学时对大学充满了各种憧憬与希望。大学里一切事物都是那么新鲜,一年下来学到了很多,也感悟了很多。在一年的学…

学习总结

无人旋翼机学习总结第一部分笔记整理无人机基础知识固定翼固定翼机英文Fixedwingaircraft泛指比空气重有动力装置驱动机翼固定于机身而且机翼本身不会相对机身运动靠空气对机翼的作用力而产生升力的航空器多旋...

个人学习总结

我是20xx春乡镇企业管理专业的一名学生,在平湖电大三年的学习时间即将结束。在这里学习的学生基本上都是利用业余时间来进修的,每天除了上班工作的时间外留给自己的学习时间少之又少。这三年来,我虽然失去很多的娱乐和休…

学习总结

20xx年高考一轮研讨学习总结与反思一瞠目结舌的变局我称之为瞠目结舌或许带有强烈的个人感情色彩但是对突然要面对20xx年全新的高考变革的广大山东考生来说这个词一点都不夸张这个让我们几多欢喜几多忧的变局都有哪些呢...

学习总结

学行之理念树花苞心态做阳光教师---伊犁州骨干教师赴南京晓庄学院学习总结10月x日——11月x日,伊犁州八县两市50名骨干教师在州教育局领导的周密筹备和精心组织下,赶赴南京晓庄学院接受了为期一个月的学习培训。…

大学生个人学期学习总结范文

在短短的时间里一个学期很快就过去了,大学生活改变了我很多东西,包括我的生活方式和学习方式,当然相比以前是进步了很多。当然,作为新世纪大学生也已经根深在自己的脑子里。对于过去的一个学期里,自己总的表现还算不错,下…

新员工工作学习总结

转眼间两个多月的时间已经匆匆地走过了,工作也在这两个多月里经历了很多。先就两个多月的工作学习总结如下:在这两个多月中,作为一个刚刚毕业的学生,我怀揣希望、好奇和要干一番事业的决心来到了这个单位,加入我们这个质量…

专业学习总结报告 (2)

专业学习总结报告转眼间大学生活已接近尾声,这些年中经历的每一天,都已在我心中留下了永久的印记,因为这些印记见证我这样一个新生的成长。我是XX大学机械工程学院热能与动力工程专业的一名应届毕业生,扎实的专业知识是成…

我的大学学习总结

三年的大学生活临近了尾声。这短短的三年,却是我的人生中弥足珍贵的三年。在这三年里,我从一个莽撞少年成长为一名合格的重庆水利电力职业技术学院毕业生,用脱胎换骨来形容并不为过。总结过去可以拨开时间的迷雾,清晰的回首…

课程学习总结报告

张奕城(管理学院港航一班11030037)一个学期的物流地理课程已经结束了。在刘念老师的指导下,我们完成了物流地理这门课程的学习。由原来的不清楚到现在的了解框架,认识了许许多多的新知识。新的学习方法.新的一些思…

地铁培训学习总结

为提高自身的管理专业技能,培养创新经营和现代管理意识,促使在工作中进一步更新观念、理清思路。运营分公司安排我们一行18人参加了为期2周的广州地铁培训学习。我们在培训中,既有观念上的洗礼,也有理论上的提高,既有知…

学总结(56篇)