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基础知识--OC语言

  • 2017年04月12日 13:00
  • 403KB
  • 下载

ios 基础知识 汇总文档

  • 2015年06月02日 10:47
  • 19.43MB
  • 下载

ios基础知识-面试题(二)

Object-C有多继承吗?没有的话用什么代替? cocoa 中所有的类都是NSObject 的子类,多继承在这里是用protocol 委托代理来实现的 你不用去考虑繁琐的多继承 ,虚基类的概念.oo...

IOS开发-Swift-基础知识学习笔记

  • 2017年04月25日 11:34
  • 33KB
  • 下载

iOS基础知识

  • 2016年03月01日 10:58
  • 3KB
  • 下载

iOS基础知识:Objective-C 之 网络请求

网络部分,未完待续

块语法block 在iOS4中使用代码块-基础知识(翻译)

翻译自 http://pragmaticstudio.com/blog/2010/7/28/ios4-blocks-1     iOS4引入了一个新特性,支持代码块的使用,这将从根本上改变你的编程...

iOS蓝牙开发(一)蓝牙相关基础知识

蓝牙常见名称和缩写 MFI ======= make for ipad ,iphone, itouch 专们为苹果设备制作的设备 BLE ==== buletouch low energy,蓝牙...

iOS开发学习专题-基础知识(五) NSDate时间 NSUserDefaults本地存储 NSNotification系统通知的详细使用方式

本文主要讲解的是 NSDate时间、NSUserDefaults本地存储、NSNotification系统通知的详细使用方式,也是NS系列基础知识的最后一篇文章 文章是博主原创,转载请标明出处 NSU...

黑马程序员--IOS入学学习--6-OC基础知识

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 本篇博客为IOS入学学习的第六篇博客,从本篇博客开始进入objective-c的学习,主要内容如...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ios基础知识
举报原因:
原因补充:

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