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成员变量

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,929评论 18 399
  • 1.OC的类可以多重继承吗?可以实现多个接口吗?要想实现类似多重继承如何实现?答:OC不可以实现多重继承。可以实现...
    欧辰_OSR阅读 6,218评论 0 30
  • 1,NSObject中description属性的意义,它可以重写吗?答案:每当 NSLog(@"")函数中出现 ...
    eightzg阅读 9,622评论 2 19
  • 每每看到父母头上的白发越来越多,动作比以前更加缓慢,身体的不适也越来越多,心里很不是滋味,所以与父母...
    者尤阅读 3,237评论 0 2
  • 2017年12月1号2号,历时两天的第一届新农村建设田庄村启动会议在安阳召开。虽然是寒冬,但是大家热情洋溢,会上各...
    很幸运认识你阅读 2,405评论 0 1