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基础知识梳理(2)

堆和栈的区别 管理方式: 对于栈来讲,是由编译器自动管理,无需我们手工控制; 对于堆来说,释放工作由程序员控制,容易产生memory leak。 申请大小: 
栈:在Windows下,栈是向...

iOS基础知识

iOS基础知识(面试必备)

iOS开发的设计模式:一、代理模式 应用场景:当一个类的某些功能需要由别的类来实现,但是又不确定具体会是哪个类实现。 优势:解耦合 敏捷原则:开放-封闭原则 实例:tableview的 数据源...

iOS 基础知识

1.停止UIView动画的方法: #import       [self.view.layer removeAllAnimations]; 2.block页面传值方法: ...

有关UIView、subview的几个基础知识点-IOS开发 (实例)

首先要弄懂几个基本的概念。   一)三个结构体:CGPoint、CGSize、CGRect   1.  CGPoint C代码   /* Points....

iOS开发之--C语言之基础知识

概览 当前移动开发的趋势已经势不可挡,这个系列希望浅谈一下个人对IOS开发的一些见解,这个IOS系列计划从几个角度去说IOS开发: C语言OC基础IOS开发(iphone/ipad)Swift 这么...

iOS应用开发----必备基础知识

iOS应用开发              第一章   关于ios开发平台 1.iPhone技术层   ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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