iOS 面霸面试题总结~[有答案]

xiaoxiao2021-02-28  60

//联系人:石虎  QQ: 1224614774昵称:嗡嘛呢叭咪哄

Day 01

01-分类与继承的区别

分类:增加方法,不能增加变量.但是可以访问类的变量

继承:子类继承了父类所有的方法和变量

继承能增加变量和方法,分类只能增加方法,不能增加变量.

继承会产生一个新的类.

分类不会产生新的类.同名的方法,分类里面优先调用

02-分类与类扩展的区别

类扩展:可以添加属性声明,添加的方法声明,匿名的分类

分类不能添加属性,只能添加方法

Day 02

//retain  mrc  strong  arc

01- 展开:@property (nonatomic,retain) NSArray *cars;

getter方法:

-(NSArray *)cars{

    return _cars;

}

setter方法:

-(void)setCars:(NSArray *)cars{

    if(_cars = !cars){

        [_cars release];

       

        _cars = [cars retain];

    }

}

-(void)dealloc{

    [super dealloc];

//    [_cars release];

    _cars = nil;

}

02- NULL,nil, Nil, NSNull

nil 是对objective c对象赋空值为了避免野指针对指针赋值一个nil

Nil:表示对类进行赋空值

NULL:用于对非对象指针赋空值,比如C指针

NSNull 集合里的空对象

对于像NSArray这样的类型,nilNULL不能做为加到其中的Object,如果定义了一个NSArray,为其分配了内存,又想设置其中的内容为空,则可以用[NSNULL null】返回的对象来初始化NSArray中的内容  初始化内容为空

Day 03

写一个代理

Day 04

写一个代理

Day 05

weak strong的区别,都是啥时候用?

Day 07 解释@selectorSEL的含义和作用

@selector对方法进行包装

SEL是一个数据类型.每一个方法都有一个 isa指针

[self run]

Day 08 程序启动的过程

0.main函数入口

1.创建UIApplication对象,创建代理对象,设置两者的代理关系

2.开启消息循环

3.加载plist文件,看里面有没有指定storyboard,如果指定了,创建UIWindow对象.加载storyboard文件.根据storyboard里面箭头指向的控制器,创建控制器对象,并且设置成window的根控制器,创建控制器的view,显示到window上并且展示出来

没有storyboard,就需要在程序启动完成以后的代理函数里面写代码创建widow对象,创建控制器设置成window的根控制器,展示window

                                                                                

Day 09数据怎么存储,有几种方式

                                                                                

偏好设置

xml xml文件或者plist文件

NSCoding

sqlite 

Core data

                                                                                

Day 10对内存管理的理解

MRC

引用计数器

alloc new (mutable)copy retain  +1

relese  autorelease -1

苹果官方的内存管理原则:

1.谁创建或者 retain,谁释放

2.alloc new (mutable)copy retain ,就会要对应一个

relese  autorelease 

dealloc 对象被销毁的之前,调用

ARC

强指针  对象有强指针指向,就不会被释放

弱指针

循环引用问题

转载请注明原文地址: https://www.6miu.com/read-81762.html

最新回复(0)