美文网首页
2018-07-10

2018-07-10

作者: 马克雅 | 来源:发表于2018-07-10 14:02 被阅读3次

1、isKindOfClass 与 isMemberOfClass 的区别

判断对象类型

-(BOOL) isKindOfClass: classObj判断是否是这个类或者这个类的子类的实例。

-(BOOL) isMemberOfClass: classObj 判断是否是当前这个类的实例。

2、return/break/continue区别

return 停止了这个for循环,跳出循环并且停止执行fn函数里后边的语句;

break 停止了这个for循环,跳出循环来继续执行fn函数里之后的语句 ;

continue 只是停止了当前循环,继续执行后面的循环,当循环执行完继续执行fn函数里之后的语句 。

3、#import<> 和 #import""的区别

#import<>用来包含系统自带的文件,#import""用来包含自定义的文件。

4、#import 跟#include 的区别

#include是c/c++导入头文件的关键字,

#import 是oc导入头文件的关键字,#import会自动导入一次,不会重复导入,不会引起交叉编译,

5、@class

作用  可以简单地引用一个类

仅仅是告诉编译器:这是一个类;并不会包含该类的所有内容。

对于循环依赖关系来说,比方A类引用B类,同时B类也引用A类。

这种嵌套包含的代码编译用#import就会报错,当使用@class在两个类相互声明,就不会出现编译报错。

6、深拷贝和浅拷贝的区别

深拷贝就是内容拷贝,浅拷贝就是指针拷贝。

深拷贝就是拷贝出和原来仅仅是值一样,但是内存地址完全不一样的新的对象,创建后和原对象没有任何关系。

浅拷贝就是拷贝指向原来对象的指针,使原对象的引用计数+1,可以理解为创建了一个指向原对象的新指针而已,并没有创建一个全新的对象。

参考:iOS开发——深拷贝与浅拷贝详解 - 简书

7、frame和bounds的区别

frame: 该view在父视图坐标系统中的位置和大小。(参照点是,父视图的坐标系统)。

bounds:该view在本地坐标系统中的位置和大小。(参照点是,本地坐标系统,以0,0点为起点)。

当bound改变时,新的frame的size等于bound的size。

新的frame.x = 旧frame.x - (bounds.size.witdh - 旧frame.size.width)/2

新的frame.y = 旧frame.y - (bounds.size.height - 旧frame.size.height)/2

总结:

frame是参考父view的坐标系来设置自己左上角的位置。

设置bounds可以修改自己坐标系的原点位置,进而影响到其“子view”的显示位置。

参考:frame和bounds的区别 - 简书

相关文章

网友评论

      本文标题:2018-07-10

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