ios基础知识

原创 2016年08月30日 23:05:52

1、什么是静态库静态库和动态库的区别程序编译一般需经预处理、编译、汇编和链接几个步骤。在我们的应用中,有一些公共代码是需要反复使用,就把这些代码编译为文件;在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中。这种库称为静态库,其特点是可执行文件中包含了库代码的一份完整拷贝;缺点就是被多次使用就会有多份冗余拷贝。静态库和动态库是两种共享程序代码的方式,它们的区别是:静态库在程序的链接阶段被复制到了程序中,和程序运行的时候没有关系;动态库在链接阶段没有被复制到程序中,而是程序在运行时由系统动态加载到内存中供程序调用。使用动态库的优点是系统只需载入一次动态库,不同的程序可以得到内存中相同的动态库的复本,因此节省了很多内存。

2、ViewController声明周期
ViewController生命周期中有那么多函数,一个重要问题就是什么代码该写在什么地方。
1、init里不要出现创建view的代码。良好的设计,在init里应该只有相关数据的初始化,而且这些数据都是比较关键的数据。init里不要掉self.view,否则会导致viewcontroller创建view。(因为view是lazyinit的)。
2、loadView中只初始化view,一般用于创建比较关键的view如tableViewController的tabView,UINavigationController的navgationBar,不可掉用view的getter(在掉super loadView前),最好也不要初始化一些非关键的view。如果你是从nib文件中创建的viewController在这里一定要首先调用super的loadView方法,但建议不要重载这个方法。
3、viewDidLoad 这时候view已经有了,最适合创建一些附加的view和控件了。有一点需要注意的是,viewDidLoad会调用多次(viewcontroller可能多次载入view,参见图2)。
4、viewWillAppear 这个一般在view被添加到superview之前,切换动画之前调用。在这里可以进行一些显示前的处理。比如键盘弹出,一些特殊的过程动画(比如状态条和navigationbar颜色)。
5、viewDidAppear 一般用于显示后,在切换动画后,如果有需要的操作,可以在这里加入相关代码。
6、viewDidUnload 这时候viewController的view已经是nil了。由于这一般发生在内存警告时,所以在这里你应该将那些不在显示的view释放了。比如你在viewcontroller的view上加了一个label,而且这个label是viewcontroller的属性,那么你要把这个属性设置成nil,以免占用不必要的内存,而这个label在viewDidLoad时会重新创建。

3、Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么?
答:Object-c的类不可以多重继承x;可以实现多个接口,通过实现多个接口可以完成C++的多重继承;Category是类别,一般情况用分类好,用Category去重写类的方法,仅对本Category有效,不会影响到其他类与原有类的关系。没有,cocoa中所有的类都是NSObject的子类,多继承在这里是用protocol委托代理来实现的 ood的多态特性在obj-c中通过委托来实现。

4、#import#include又什么区别,@class, #import<> #import””又什么区别?
答:#importObjective-C导入头文件的关键字,#includeC/C++导入头文件的关键字,使用#import头文件会自动只导入一次,不会重复导入,相当于#include#pragmaonce;@class告诉编译器某个类的声明,当执行时,才去查看类的实现文件,可以解决头文件的相互包含;#import<>用来包含系统的头文件,#import””用来包含用户头文件。

5、属性readwritereadonlyassignretaincopynonatomic各是什么作用,在那种情况下用?

1.readwrite 是可读可写特性;需要生成getter方法和setter方法时

2.readonly 是只读特性只会生成getter方法不会生成setter方法 ;不希望属性在类外改变

3.assign 是赋值特性,setter方法将传入参数赋值给实例变量;仅设置变量时;

4.retain 表示持有特性,setter方法将传入参数先保留,再赋值,传入参数的retaincount+1;

5. copy 表示赋值特性,setter方法将传入对象复制一份;需要完全一份新的变量时。6. nonatomic 非原子操作,决定编译器生成的setter getter是否是原子操作,atomic表示多线程安全,一般使用nonatomic

6、4.写一个setter方法用于完成@property (nonatomic,retain)NSString *name,写一个setter方法用于完成@property(nonatomic,copy)NSString*name-(void) setName:(NSString*) str{[strretain];[namerelease];name= str;}-(void)setName:(NSString *)str{idt = [str copy];[namerelease];name= t;}

IOS开发学习中的基础知识究竟有多重要?

万事开头难,这句话不是没有道理的 记得在学习C语言的时候,函数的调用、指针和结构体老师讲过很多次,但是我还是无法深刻理解,等到OC结束以后再回过头看了几次视频和书,就觉得,咦??其实也不...
  • DLS15010622
  • DLS15010622
  • 2015年02月23日 22:09
  • 452

iOS基础知识5

一、objc使用什么机制管理对象内存? 通过retainCount的机制来决定对象是否需要释放。每次RunLoop的时候,都会检查对象的retainCount,如果retainCount 为0,说明该...
  • shenhuaikun
  • shenhuaikun
  • 2017年09月07日 18:09
  • 170

【图灵】iOS技能书单——入门+进阶+精通

小编最近在研究一份不错的技能图谱(https://github.com/TeamStuQ/skill-map),遵照图谱精神,小编先做了个iOS技能书单,分享给大家。 老样子,点击书名查看完...
  • turingbooks
  • turingbooks
  • 2016年03月10日 14:42
  • 3958

11、iOS开发详解(基础知识)

iOS开发详解本章节针对如何开发基于iOS系统的插件进行介绍
  • zzh_receive
  • zzh_receive
  • 2016年11月17日 21:08
  • 2188

iOS逆向工程一:入门知识

1、iOS 软件逆向工程常用的工具class-dump软件获取app的.h文件目录 逆向常用的监测工具:Reveal、tcpdump、libNotifyWatch、PonyDebugger Revea...
  • Yj_sail
  • Yj_sail
  • 2016年09月16日 13:59
  • 1099

VC入门必备--基础知识(一)

VC入门必备--基础知识(一)首先我们要了解以下概念:应用程序(Application),他就是由指令(Instruction)组成的可以运行的文件。进程(Process),有时和应用程序的意思一样,...
  • huahuamoon
  • huahuamoon
  • 2007年12月20日 14:39
  • 1139

iOS 基础知识

1.停止UIView动画的方法: #import       [self.view.layer removeAllAnimations]; 2.block页面传值方法: ...
  • qq_33401193
  • qq_33401193
  • 2016年05月05日 22:30
  • 180

Web前端之基础知识

学习web前端开发基础技术需要掌握:HTML、CSS、Javascript 1.HTML是网页内容的载体 内容就是网页制作者放在页面上想要让用户浏览的信息,可以包含文字、图片、视频等。 2.C...
  • bear_huangzhen
  • bear_huangzhen
  • 2015年06月06日 23:00
  • 3712

IOS基础知识

ios5 模拟器上没 home键,怎么返回的
  • wugang8023
  • wugang8023
  • 2014年07月04日 14:28
  • 234

ios基础知识

1. 了解main函数,  UIApplication是初始化程序的核心,它接受4个参数。  其中argc和argv两个参数来自于main()接受的两个参数;另外两个String型参数分别表示程...
  • WUWUWEIWEILONGLONG
  • WUWUWEIWEILONGLONG
  • 2014年11月08日 18:07
  • 222
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ios基础知识
举报原因:
原因补充:

(最多只允许输入30个字)