iOS面试整理(基础部分 最新更新2017/2/27)

整理收集下面试基础,日常学习回忆下,也有助于基础巩固。(部分资料回答来源于网络搜索),如果有错误部分,欢迎指出改正或探讨。

2017.2.27

javascript基本数据类型:

字符串(String)、数字(Number)、布尔(Boolean)、数组(Array)、对象(Object)、空(Null)、未定义(Undefined)


2017/2/9更新

lldb(gdb)常用的调试命令?

• po:打印对象,会调用对象description方法。是print-object的简写

• expr:可以在调试时动态执行指定表达式,并将结果打印出来,很有用的命令

• print:也是打印命令,需要指定类型

• bt:打印调用堆栈,是thread backtrace的简写,加all可打印所有thread的堆栈

• br l:是breakpoint list的简写


2017/1/22更新

如何让计时器调用一个类方法

•计时器只能调用实例方法,但是可以在这个实例方法里面调用静态方法。

•使用计时器需要注意,计时器一定要加入RunLoop中,并且选好model才能运行。scheduledTimerWithTimeInterval方法创建一个计时器并加入到RunLoop中所以可以直接使用。

•如果计时器的repeats选择YES说明这个计时器会重复执行,一定要在合适的时机调用计时器的invalid。不能在dealloc中调用, 因为一旦设置为repeats为yes,计时器会强持有self,导致dealloc永远不会被调用,这个类就永远无法被释放。比如可以在viewDidDisappear中调用,这 样当类需要被回收的时候就可以正常进入dealloc中了。

[NSTimer scheduledTimerWithTimeInterval:1 target:selfselector:@selector(timerMethod) userInfo:nilrepeats:YES];

-(void)timerMethod

{

调用类方法

[[self class] staticMethod];

}

-(void)invalid

{

[timer invalid];

timer =nil;

}

id和NSObject*的区别

•id是一个objc_object结构体指针,定义是typedef structobjc_object *id

•id可以理解为指向对象的指针。所有oc的对象id都可以指向,编译器不会做类型检查,id调用任何存在的方法都不会在编译阶段报错,当然如果这个id指向的对象没有这个方法,还是会崩溃的。

• NSObject *指向的必须是NSObject的子类,调用的也只能是NSObjec里面的方法否则就要做强制类型转换。

•不是所有的OC对象都是NSObject的子类,还有一些继承自NSProxy。NSObject *可指向的类型是id的子集


category和extension的区别

• category:分类有名字,类扩展没i有分类名字,是一种特殊的分类

• extension:分类只能扩展方法(属性仅仅是声明,并没真正实现),类扩展可以扩展属性、成员变量和方法

define和const常量有什么区别?

• define在预处理阶段进行替换,const常量在编译阶段使用

•宏不做类型检查,仅仅进行替换,const常量有数据类型,会执行类型检查

• define不能调试,const常量可以调试

• define定义的常量在替换后运行过程中会不断地占用内存,而const定义的常量存储在数据段只有一份copy,效率更高

• define可以定义一些简单的函数,const不可以

block和weak修饰符的区别?

•__block不管是ARC还是MRC模式下都可以使用,可以修饰对象,也可以修饰基本数据类型

•__weak只能在ARC模式下使用,只能修饰对象(NSString),不能修饰基本数据类型

• block修饰的对象可以在block中被重新赋值,weak修饰的对象不可以

static关键字的作用

•函数(方法)体内static变量的作用范围为该函数体,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值;

•在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;

•在模块内的static函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明 它的模块内;

•在类中的static成员变量属于整个类所拥有,对类的所有对象只有一份拷贝;

•在类中的static成员函数属于整个类所拥有,这个函数不接收this指针,因而只能访问类的static成员变量

你可能感兴趣的:(iOS面试整理(基础部分 最新更新2017/2/27))