iOS初级面试题

1.OC中创建线程的方法是什么?制定在主线程中执行代码?如何延时执行代码?

1)有三种: NSThread; NSOperation,NSOperationQueue;GCD;

2)//一种

[self performSelectorOnMainThread:<#(SEL)#> withObject:<#(id)#> waitUntilDone:<#(BOOL)#>];

//二种

[self performSelector:<#(SEL)#> onThread:[NSThread mainThread] withObject:<#(id)#> waitUntilDone:<#(BOOL)#>];

//三种

dispatch_sync(dispatch_get_main_queue(), ^{

});

3)有三种

//一种 使用perform

[self performSelector:<#(SEL)#> withObject:<#(id)#> afterDelay:<#(NSTimeInterval)#>];

//二种 使用NSTimer

[NSTimer scheduledTimerWithTimeInterval:<#(NSTimeInterval)#> target:<#(id)#> selector:<#(SEL)#> userInfo:<#(id)#> repeats:<#(BOOL)#>];

//三种 使用GCD

double delayInSeconds = 2.0;

dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds *NSEC_PER_SEC));

dispatch_after(popTime, dispatch_get_main_queue(), ^{

});

2.#import跟#include,@class有什么区别?#import<>跟#import””有什么区别?

1)#import和#include都能完整地包含某个文件的内容,#import能防止同一个文件被包含多次;

2)@class仅仅声明一个类名,并不会包含类的完整声明;@class还能解决循环包含的问题;

3)#import<>用来包含系统自带的文件,#import""用来包含自定义的文件;

3.属性readwrite,readonly,assign,retain,copy,nonatomic各是什么作用,在哪种情况下用?

1)readwrite和readonly是用在property中,前者能生成set和get方法,后者只能生成get方法;

2)assign用于基本数据,即非对象数据;

3)copy一般用于字符串,retain一般用于对象(ARC里面用strong;);

4)atomic原子性,加锁,耗内存;nonatomic非原子性,因移动设备内存有限,一般为非原子性,它也一般可以用来修饰UI ,UI是绝对安全,因其只能在主线程,所以不用加锁;

4.写一个setter方法用于完成@property (nonatomic, retain) NSString *name,写一个setter方法用于完成@property (nonatomic, copy) NSString *name;

1)

- (void)setName:(NSString *)name {

if (_name !=name) {

[_name release];

_name = [name retain];

}

2)

- (void)setName:(NSString *)name {

if (_name !=name) {

[_name release];

_name = [name copy];

}

5.语句 NSString *obj = [[NSData alloc] init];在编译运行时,obj分别的类型;

编译时是NSString类型;运行时是NSData类型;

6.浅拷贝和深拷贝的区别?

浅拷贝:没有产生新对象,只是地址的拷贝;

深拷贝:全部内容复制一遍,开辟新的内存空间;

7.分类有什么优点,分类和继承有什么区别;

1)分类的优点:分类可以在不修改原来类模型的基础上拓展方法;

2)相似之处:都能扩充新的方法;

区别:

分类:不会产生新的类,分类只能添加方法,不能添加成员变量,一旦实现父类的原方法,会覆盖父类的方法;

继承:新建一个子类,如是覆盖父类的方法,但还是有可能调用父类的方法,父类的操作还是可能会调回来;

8.分类和类扩展的区别:

[ 类扩展(亦匿分类)是:@interface ViewController ()

@end ];

分类:它又名称;只能扩充方法;

类扩展:没有名称;它能扩充成员变量;

9.protocol在object c和java的区别;

java的接口中声明的方法必须都实现;

oc不一定要实现;

10.KVO和KVC?

kvc:通过一个字符串的key来修改对象的属性值;

@property (nonatomic, assign) int age;

//id是指OC任意对象,如果是基础数据类型,要在其前面加上”@”

[self setVaule:@10 forKeyPath:@“age”];

kvo:用来监听某个对象的属性;

11.使用代理的目的;

1)传数据;

2)用来通知一些事情,如tabel的某一行被点了,这个时候要通知代理;

3)解耦;

12.为什么说oc是一门运行时的动态语言;

oc是在运行时才知道对象的数据类型,编译时只有编译器知道;

eg:NSString *obj = [[NSData alloc] init];

13.通知和协议的区别?

相同点:都能传数据;

不同点:

通知:耦合性更低,只要监听我通知,可以给多个传对象;

协议:使用协议只能给一个对象传数据;

14.推送通知;

1)本地推送:

2)远程推送:

15.什么是多态?

不同对象对同一消息的不同响应.子类可以重写父类的方法

多态就是允许方法重名 参数或返回值可以是父类型传入或返回

16.单例?

(最好是单独新建一个.h的文件,写成宏的形式;)

// .h文件

#define LBSingletonH(name) + (instancetype)shared##name;

// .m文件

#define LBSingletonM(name) \

static id _instance = nil; \

+ (id)allocWithZone:(struct _NSZone *)zone \

{ \

static dispatch_once_t onceToken; \

dispatch_once(&onceToken, ^{ \

_instance = [super allocWithZone:zone]; \

}); \

return _instance; \

} \

+ (instancetype)shared##name \

{ \

static dispatch_once_t onceToken; \

dispatch_once(&onceToken, ^{ \

_instance = [[self alloc] init]; \

}); \

return _instance; \

} \

- (id)copyWithZone:(NSZone *)zone \

{ \

return _instance; \

}

17.方法和选择器(selector)如何区别?

1)选择器:它是用来包装一个方法,用来找到内存中对应的方法地址,再调用对应的方法;

2)方法:是存于内存中;

18.垃圾回收?

垃圾回收:程序在运行过程中随机回收一些没有正在使用的对象;

oc1.0:没有垃圾回收;

oc2.0:有垃圾回收,但是只用在mac平台,iOS不支持,因耗内存;

ARC:只不过是编译器特性,编译器会自动生成管理内存的代码;

19.什么是NSOpetation queue?

用来异步执行的操作,一般可用在网络请求等耗时操作;

20.什么是懒加载?

只加载一次,提升体验;如:控制器显示窗口view;

21.一个控制器能不能使用2个tableView?

可以;

22.什么是简便构造方法;

用来创建对象的类方法;

23.什么是 NSManagedObject model?

NSManagedObject 继承自NSObject,是一个比较特殊的模型,用法比较复杂;

24.什么是predicate?

使```基于/过滤

NSArray *array = @[@"13",@"abc",@"dfd"];

[array filteredArrayUsingPredicate:<#(NSPredicate *)#>];

[array filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {

return [evaluatedObject rangeOfString:@"a"].length !=0;

}]];

24.const指常量;

25.线程和进程的区别?

线程是用来干事情的,多线程能做多件事;

进程是用来开辟内存空间;

26.堆和栈的区别?

堆放对象,内存是要程序员手动释放;

栈放局部变量,内存是自动释放;

block堆和栈都有可能,默认是放在栈;

27.TableView的delegate的属性是assign不是retain?

为了解决return循环的问题;

28.tableView的重用机制?

循环利用;

29.ViewController的loadView,viewDidLoad,viewDidUnload分别是什么时候调用;

1)省略;

2)省略;

3)当控制器的view因内存不足被系统自动回收;

30.对象是什么时候释放的?

引用计数器为0时;

31.如何创建一个iPad应用程序

设备支持的应用程序

iPhone上只能运行iPhone程序

iPad上能够运行iPhone \ iPad程序

开发过程

iPhone和iPad开发的流程是一致的

在iPhone开发中学到的所有知识基本都能用在iPad上

32.什么是UIPopoverController

是iPad开发中常见的一种控制器(在iPhone上不允许使用)

跟其他控制器不一样的是,它直接继承自NSObject,并非继承自UIViewController

它只占用部分屏幕空间来呈现信息,而且显示在屏幕的最前面



End…………

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,121评论 29 470
  • 史上最全的iOS面试题及答案 iOS面试小贴士———————————————回答好下面的足够了----------...
    Style_伟阅读 2,344评论 0 35
  • iOS面试小贴士 ———————————————回答好下面的足够了------------------------...
    不言不爱阅读 1,960评论 0 7
  • 多线程、特别是NSOperation 和 GCD 的内部原理。运行时机制的原理和运用场景。SDWebImage的原...
    LZM轮回阅读 2,001评论 0 12
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,562评论 18 399