iOS理论基础-First

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

不可以多重继承;可以实现多个接口;Category是类别;重写一个类用类别比较好,因为用类别重写只对Category有效,不影响其他的类。

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

#import是Object-C导入头文件的声明;#include是C语言导入头文件的声明;#import默认只导入头文件一次,相当于#include和#pragma once;@class是对类的声明;#import<>是导入系统头文件的声明。#import“”是到时用户头文件的声明

3. 属性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;

4.对于语句NSString*obj = [[NSData alloc] init]; obj在编译时和运行时分别时什么类型的对象?

编译时是NSString类型,运行时是NSData.

5.常见的object-c的数据类型有那些, 和C的基本数据类型有什么区别?如:NSInteger和int

Object-C中数据类型有NSString,NSSArray,NSSMutableArray,NSSData等,这些都是类,初始化创建之后生成的是对象,而C语言中的int是数据类型,只是系统开辟的一些字节内存空间,而NSInteger也是数据类型,并不是NSNumber的子类,那当然更不会是NSObect的子类,它相当于C语言当中的int或者Long,区别在于系统内存是32位还是64位对应是int和Long

6.id 声明的对象有什么特性?

id是Object-C中的万能指针,它可以指向任何对象

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

自动内存管理-ARC

手动内存管理-MRC

内存池

8. 原子(atomic)跟非原子(non-atomic)属性有什么区别?

atomic是原子性,提供多线程安全,防止在未完成的时候被其它线程索读取

nonatomic是非原子性,在自己管理的内存中,访问器自动保留并释放返回的值,若声明nonatomic,则只返回这个值。

9. 浅复制和深复制的区别?

答:浅层复制:只复制指向对象的指针,而不复制引用对象本身。

深层复制:复制引用对象本身。

意思就是说我有个A对象,复制一份后得到A_copy对象后,对于浅复制来说,A和A_copy指向的是同一个内存资源,复制的只不过是是一个指针,对象本身资源

还是只有一份,那如果我们对A_copy执行了修改操作,那么发现A引用的对象同样被修改,这其实违背了我们复制拷贝的一个思想。深复制就好理解了,内存中存在了

两份独立对象本身。

用网上一哥们通俗的话将就是:

浅复制好比你和你的影子,你完蛋,你的影子也完蛋

深复制好比你和你的克隆人,你完蛋,你的克隆人还活着。

10. 类别的作用?继承和类别在实现中有何区别?

答:category 可以在不获悉,不改变原来代码的情况下往里面添加新的方法,只能添加,不能删除修改,并且如果类别和原来类中的方法产生名称冲突,则类别将覆盖原来的方法,因为类别具有更高的优先级。

类别主要有3个作用:

1).将类的实现分散到多个不同文件或多个不同框架中。

2).创建对私有方法的前向引用。

3).向对象添加非正式协议。

继承可以增加,修改或者删除方法,并且可以增加属性。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.项目经验 2.基础问题 3.指南认识 4.解决思路 ios开发三大块: 1.Oc基础 2.CocoaTouch...
    阳光的大男孩儿阅读 10,469评论 0 13
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,377评论 30 472
  • 307、setValue:forKey和setObject:forKey的区别是什么? 答:1, setObjec...
    AlanGe阅读 5,502评论 0 1
  • iOS面试题及答案 1. Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一...
    iOS_阿辉阅读 5,887评论 0 32
  • double pow ( double, double ) - power ofNSLog(@"%.f", pow...
    Nirvana_icy阅读 1,254评论 0 1