美文网首页
iOS理论基础-First

iOS理论基础-First

作者: 秦肇奎Remax | 来源:发表于2017-03-25 21:01 被阅读0次

    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).向对象添加非正式协议。

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

    相关文章

      网友评论

          本文标题:iOS理论基础-First

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