厦门IOS培训
达内厦门iOS培训中心

0592-5903858

热门课程

整理2018年iOS面试题

  • 时间:2018-05-31
  • 发布:厦门达内ios培训
  • 来源:企业面试题

1.   Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么?

答:Object-c的类不可以多重继承;可以实现多个接口,通过实现多个接口可以完成C++的多重继承;Category是类别,一般情况用分类好,用Category去重写类的方法,仅对本Category有效,不会影响到其他类与原有类的关系。

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

答:#import是Objective-C导入头文件的关键字,#include是C/C++导入头文件的关键字,使用#import头文件会自动只导入一次,不会重复导入,相当于#include和#pragma once;@class告诉编译器某个类的声明,当执行时,才去查看类的实现文件,可以解决头文件的相互包含;#import<>用来包含系统的头文件,#import””用来包含用户头文件。

3.这段代码有什么问题吗:

答:@implementation Person
- (void)setAge:(int)newAge {
self.age = newAge;
}
@end

正确写法
{
if(_age){
[_age release];
}
_age = [newAge retain];

}
死循环(扩展:知道如何正确写setter和getter方法)

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

答readwrite 是可读可写特性;需要生成getter方法和setter方法时
readonly 是只读特性  只会生成getter方法 不会生成setter方法 ;不希望属性在类外改变assign是赋值特性,setter方法将传入参数赋值给实例变量;仅设置变量时;retain表示持有特性,setter方法将传入参数先保留,再赋值,传入参数的retaincount会+1;copy表示拷贝特性,setter方法将传入对象复制一份;需要完全一份新的变量时。nonatomic 非原子操作,决定编译器生成的setter getter是否是原子操作,atomic表示多线程安全,一般使用nonatomic


5.截取字符串”20 | http://www.baidu.com”中,”|”字符前面和后面的数据,分别输出它们。

componentsSeparatedByString
NSString * str = @“20|http://www.baidu.com”;
for(NSString*s in [str componentsSeparatedByString]){
NSLog(@“%@“,s);
}


6.指出下面代码的问题- (void)willEndStepOne:(NSObject *)userInfo{    [NSThread detachNewThreadSelector:@selector(doSomeThing:) toTarget:self withObject:userInfo];}- (void)doSomeThing:(NSObject *)userInfo{    int max_loop_times = 999999;    for (int i=0; i<max_loop_times; i++) {        int randNum = rand();        NSString *tmpString = [NSString stringWithFormat:@"%d", randNum];        NSLog(@"%@", tmpString);    }}


7.分析json、xml的区别?json、xml解析方式的底层是如何处理的?

http://www.open-open.com/bbs/view/1324367918671
http://hi.baidu.com/fevelen/item/a25253ab76f766756cd455b6


8.Objective-C如何对内存管理的,说说你的看法和解决方法?

Objective-C的内存管理主要有三种方式ARC(自动内存计数)、手动内存计数、内存池。


9.内存管理的几条原则时什么?按照默认法则.那些关键字生成的对象

需要手动释放?在和property结合的时候怎样有效的避免内存泄露?
谁申请,谁释放
遵循Cocoa Touch的使用原则;
内存管理主要要避免“过早释放”和“内存泄漏”,对于“过早释放”需要注意@property设置特性时,一定要用对特性关键字,对于“内存泄漏”,一定要申请了要负责释放,要细心。
关键字alloc 或new 生成的对象需要手动释放;
设置正确的property属性,对于retain需要在合适的地方释放,

10.What is lazy loading?

懒汉模式,只在用到的时候才去初始化。也可以理解成延时加载。我觉得最好也最简单的一个列子就是tableView中图片的加载显示了。一个延时载,避免内存过高,一个异步加载,避免线程堵塞
上一篇:各大企业常见的ios面试题之一
下一篇: 2018年最新iOS面试题及答案

2018最新iOS面试题精选总结

2018年最新iOS面试题及答案

整理2018年iOS面试题

各大企业常见的ios面试题之一

选择城市和中心
贵州省

广西省

海南省