`
leili
  • 浏览: 179997 次
社区版块
存档分类
最新评论

k哥的IOS开发学习笔记

 
阅读更多



本笔记不断更新, 欢迎关注和转载, 和大家一起进步。

一. object c及其他基本概念:

1) Object -C使用#import代替#include

2) Object -C预设文件后缀名是.m, Object c++的后缀是.mm

3) 类的声明和定义:

声明:@interface Class: Parent {} @end

实现: Implementation以@implementationClassName开始,以@end 结束

4) 协议protocol: 类似java的interface或c++的纯虚类

声明:@protocol ProtocolName (methods you mustimplement)@end

调用某个protocol的方法: @interface SomeClass<Protocol 1, Protocol 2>

实现:不需要在头文件的methods列表。 直接在.m文件里实现它既可。

5) 属性property:由编译器来自动实现属性的获取/设置方法。

声明: @property(nonatomic,retain) UIButton*button;

综合: @synthesize button;

6) 对象的创建和释放:你创建的对象,都要负责释放,否则就会导致内存泄露。默认有个init()方法。 也可以自己实现init方法,初始化一些变量。

初始化:

- 简单方法:Object* object = [[Object alloc] init];

- 参数方法:Object* object = [[Object alloc]initWithArgument:argument];

释放: [object release];

7)应用程序委托: 一个应用程序委托应能完成如下工作:

1) 启动时,必须能创建应用程序的窗口并向用户显示(applicationDidFinishLaunching)。

2) 必须能初始化数据

3) 必须能响应"quit退出"请求(dealloc)

4) 必须能处理低内存警告(applicationDidReceiveMemoryWarning)


二. IOS程序的性能和响应速度优化建议

1) 不要阻塞主线程
将网络请求之类的任务放到后台线程运行
2 ) 有效地使用内存
3) 减少应用程序的内存印迹
- 消除内存泄露:Instruments可以用来跟踪代码中的泄露
- 使资源文件尽可能小
- 使用Core Data或SQLite来处理大的数据

- 延缓装载资源(lazyloadng)

- 将程序连编为Thumb格式:加入-mthumb开关可以将代码的尺寸减少最多达35%。但是,对于具有大量浮点数运算的代码模块,请务必将这个选项关闭,因为对那样的模块使用Thumb反而会导致性能的下降。

4) 恰当地分配内存

- 减少autorelease的使用,多使用release

- 为资源设置尺寸限制

- 避免无边界的问题集
5) 浮点数运算的考虑
如果代码中有大量的浮点数运算,就不要用-mthumb选项来编译代码
6) 减少电力消耗

- 关闭当前未被使用的硬件功能,比如GPS, 加速器等
- 避免需要轮询的工作,因为轮询会阻止CPU进入休眠状态。您可以通过NSRunLoop或者NSTimer类来规划需要做的工作,而不是使用轮询。

- 尽一切可能使共享的UIApplication对象的idleTimerDisabled属性值保持为NO。当设备处于不活动状态一段时间后,空闲定时器会关闭设备的屏幕。如果您的应用程序不需要设备屏幕保持打开状态,就让系统将它关闭。如果关闭屏幕给您的应用程序的体验带来负面影响,则需要通过修改代码来消除那些影响,而不是不必要地关闭空闲定时器。

- 尽可能将任务合并在一起,以便使空闲时间最大化。每隔一段时间就间歇性地执行部分任务比一次性完成相同数量的所有任务开销更多的电能。间歇性地执行任务会阻止系统在更长时间内无法关闭硬件。

- 避免过度访问磁盘。举例来说,如果您需要将状态信息保存在磁盘上,则仅当该状态信息发生变化时才进行保存,或者尽可能将状态变化合并保存,以避免短时间频繁进行磁盘写入操作。

- 不要使屏幕描画速度比实际需求更快。从电能消耗的角度看,描画的开销很大。不要依赖硬件来压制应用程序的帧率,而是应该根据程序实际需要的帧率来进行帧的描画。

7) 联网操作的省电优化

联网是最耗电的操作,应遵循以下原则让网络访问最小化:

- 仅在需要的时候连接外部网络,不要对服务器进行轮询。

- 当您需要连接网络时,请仅传递完成工作所需要的最少数据。请使用紧凑的数据格式,不要包含可被简单忽略的额外数据。

- 尽可能快地以群发(inburst)方式传递数据包,而不是拉长数据传输的时间。当系统检测到设备没有活动时,就会关闭Wi-Fi和蜂窝无线信号。您的应用程序以较长时间传输数据比以较短时间传输同样数量的数据要消耗更多的电能。

- 尽可能通过Wi-Fi无线信号连接网络。Wi-Fi耗电比基带无线少,是推荐的方式。

- 如果您通过CoreLocation框架收集位置数据,则请尽可能快地禁止位置更新,以及将位置过滤器和精度水平设置为恰当的值。Core Location通过可用的GPS、蜂窝、和Wi-Fi网络来确定用户的位置。虽然Core Location已经努力使无线信号的使用最小化了,但是,设置恰当的精度和过滤器的值可以使Core Location在不需要位置服务的时候完全关闭硬件。

8) 代码优化
模拟器提供的优化工具可以用来消除内存泄露以及排除由低效算法引起或已知瓶颈引起的计算热点。 但在真机上运用Instruments进行优化才是程序发布前完全优化的唯一方式。


三. 经验总结

1)Objective-C++中,可以用C++代码调用方法也可以从Objective-C调用方法。在这两种语言里对象都是指针,可以在任何地方使用。例如,C++类可以使用Objective-C对象的指针作为数据成员,Objective-C类也可以有C++对象指针做实例变量。

注意:Xcode需要源文件以".mm"为扩展名,这样才能启动编译器的Objective-C++扩展。

OC++没有为OC类增加C++的功能,也没有为C++类增加OC的功能。不能互相继承

小结如下:

.m 文件可以混合c 和 objective-c 代码。

.mm 文件可以混合 c c++ objective-c 代码。

.c、.cpp 不能混合有objective-c 代码

2)编译静态库和使用

- 创建一个project, 类型是 Cocoa Touch Static Library

- 调用libstatic.a的方法:

Search Paths > Header Search Path > ../libstatic/**

加入libstatic.a:Build Phases的Link Binary With Library

-注意lib project的target是IOSDevice还是emulator.前者是arm7,后者是i386,不能混用。不过可以用lipo打包成一个.a文件


to be continued~~~


分享到:
评论

相关推荐

    ios开发学习笔记(三)

    在“ios开发学习笔记(三)”中,博主可能还会讨论调试技巧,如使用Xcode的调试器,理解断点、变量观察以及性能分析工具。此外,可能会涉及多线程编程,如GCD(Grand Central Dispatch)和OperationQueue,以及内存...

    ios安全学习笔记

    iOS安全学习笔记的知识点涵盖了多个方面,从学习资料的搜集到优秀博客文章和GitHub资源的整理,这为iOS安全研究者提供了一个丰富的资源库。以下是对上述内容中提及知识点的详细说明: 1. iOS安全学习资料汇总 首先...

    iOS开发教程(大神原创笔记)副本.pdf

    ### iOS开发教程(大神原创笔记)副本.pdf #### 核心知识点概览 本教程主要围绕iOS开发的基础知识和技术要点展开,旨在帮助初学者快速掌握iOS应用开发的基本流程和核心概念。以下是从该文档标题、描述及部分内容中...

    iOS 开发流程个人学习笔记

    这份个人学习笔记将深入探讨iOS开发的核心概念、工具、流程以及最佳实践。 首先,我们要了解iOS开发的基础——Swift编程语言。Swift是Apple在2014年推出的一种现代、安全、强大的编程语言,用于构建iOS、iPadOS、...

    IOS开发 初级笔记

    ### IOS开发初级笔记知识点 #### 一、解决“Error launching remote program: No such file or directory”问题 在iOS开发过程中,遇到“Error launching remote program: No such file or directory”的问题时,...

    学习ios(必看经典)牛人40天精通iOS开发的学习方法

    这是一套从一个对iOS开发感兴趣的学员到iOS...通过本系列课程的学习,希望使一个对iOS开发感兴趣,想从事iOS开发的学员,成为一名真正iOS开发人员,iOS从业者,iOS技术大牛,最重要的是学会解决开发中遇到困难的方法。

    最好的ios开发书籍

    总的来说,《最好的iOS 5开发新手教程》是一本全面覆盖iOS开发基础的书籍,无论是对Swift语法的解析,还是对UIKit和相关服务的介绍,都为初学者提供了一个良好的学习路径。通过系统阅读并实践书中的内容,开发者可以...

    iOS开发笔记(适用小白)

    iOS开发一年的工作笔记,初级知识,适合开发时查阅,方便,详细

    iOS开发进阶-唐巧.pdf

    如果把成为iOS 开发高手的过程比作武侠小说中的修炼过程的话,工具、实践和理论的学习就分别对应兵器、招式和内功的修炼。《iOS开发进阶》希望通过这三方面的综合讲解,全面提高开发者的技能水平.

    iOS开发进阶-完整版

    根据提供的信息,我们可以推断出这是一本关于iOS开发进阶的书籍,作者为唐巧。...无论是对于想要深入了解iOS开发细节的专业人士还是对于希望通过系统学习进入该领域的初学者来说,都是一本非常有价值的参考书籍。

    精通IOS开发 第7版 归档文件

    学习iOS开发,你需要掌握Swift编程语言,这是苹果为iOS、macOS、watchOS和tvOS平台开发的主要语言。Swift语法简洁明了,支持类型安全和内存管理,同时具有强大的功能,如闭包、泛型和协议扩展。书中源代码的编写就是...

    《iOS开发零基础入门教程》(40集)

    资源名称:《iOS开发零基础入门教程》(40集)资源目录:【】传智播客《iOS开发零基础入门教程》1.1【】传智播客《iOS开发零基础入门教程》1.2【】传智播客《iOS开发零基础入门教程》1.3【】传智播客《iOS开发零基础...

    IOS开发指南(第5版) pdf下载地址

    《iOS开发指南(第5版)》是一本深入探讨iOS应用程序开发...通过阅读《iOS开发指南(第5版)》,开发者不仅可以学习到完整的iOS开发流程,还能掌握到当前行业的最佳实践,为创建高质量、用户友好的iOS应用打下坚实的基础。

    苹果iOS开发工作笔记(从事iOS开发一年所总结的常用知识点)

    综上所述,文档为iOS开发者提供了一系列的实用知识点和示例代码,覆盖了iOS开发过程中的诸多重要方面,从UI设计到图形处理,再到状态控制,为开发者提供了系统性的学习资源。同时,由于文档中可能包含了一些OCR识别...

    iOS开发视频教程

    资源名称:iOS开发视频教程资源目录:【】iOS开发视频教程-第01讲-iOS历史介绍【】iOS开发视频教程-第02讲-XCode安装【】iOS开发视频教程-第03讲-UIView_PPT【】iOS开发视频教程-第04讲-UILabel【】iOS开发视频教程-...

    IOS 学习笔记补充1

    "IOS学习笔记补充1"是对前期学习内容的进一步丰富和完善,旨在帮助开发者更好地理解和掌握iOS开发的关键知识点。这份笔记不仅适用于初学者,对于有一定经验的开发者来说,也是一个有价值的参考资料。 在iOS开发中,...

    iOS开发教程(大神原创笔记).pdf

    iOS开发教程(大神原创笔记

    iOS逆向开发笔记.zip

    IOS开发

Global site tag (gtag.js) - Google Analytics