美文网首页
iOS面试题

iOS面试题

作者: 许仙_6100 | 来源:发表于2018-08-28 19:18 被阅读0次

1.Object-c的类可以多继承吗?可以实现多个接口吗?

答:不可以多继承,可以用实现多个接口的方式来完成多重继承。

2.Category是什么?重写一个类的方式用继承好还是分类好?为什么?

答:Category是类别,一般情况用类别,用类别重写类的方法仅对本类别有效。

3.#import和#include有什么区别?@class呢?#import<>和#import“‘又有什么区别?

答:#import是oc导入头文件的关键字,#import头文件只会自动导入一次,不会重复导入;

#include是C/C++倒入头文件的关键字

@class类的声明,当执行时才去查看类的实现文件,可以解决头文件的相互包含;

#import<>用来包含系统的头文件,#import“”用来包含用户头文件。

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

1).readwrite 是可读可写的,需要生成getter/setter方法时;

2).readonly 可读不可写,只生成getter方法,不希望属性在类外改变时;

3).assign 是赋值特性,setter方法将传入参数赋值给实例变量,仅设置变量时;

4).retain 表示持有特性,setter方法将传入参数先保留,再赋值,传入参数的retaincount会+1;

5).copy 表示赋值特性,setter方法将传入对象赋值一份,需要完全一份新的变量时;

6).nonatomic 非原子操作,决定编译器生成的setter/getter是否是原子操作,atomic表示多线程安全;

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

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

答:

```

-?(void)?setName:(NSString *)?str{

[str?retain];

[name?release];

name?=?str;

}

-?(void)setName:(NSString?*)str{

i

}

```

相关文章

网友评论

      本文标题:iOS面试题

      本文链接:https://www.haomeiwen.com/subject/brwqwftx.html