大家好 我是up主子乔 这里给大家整理一下2018年的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

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中图片的加载显示了。一个延时载,避免内存过高,一个异步加载,避免线程堵塞

小编有一个分享面试心得交流的扣扣群,里面有小编最近面试各个公司的面试题,有兴趣可以加小编的群哦 欢迎各位大神和小白

大家好 我是up主子乔 这里给大家整理一下2018年的ios面试题_第1张图片

你可能感兴趣的:(大家好 我是up主子乔 这里给大家整理一下2018年的ios面试题)