iOS基础知识点总结

1.内存分区情况:

a.代码区:存放函数二进制代码;

b.数据区:系统运行时申请内存并初始化,系统退出时由系统释放,主要存放常量,静态变量,全局变量;

c.堆区:通过malloc等函数或者new动态申请到的,需要程序员手动申请和释放;

d.栈区:函数模块内申请,函数结束时由系统自动释放。存放局部变量,函数参数。

2.队列和栈的区别:

队列和栈是两种不同的数据容器,从数据结构的角度来说都是线性结构的,区别在于队列是一种先进先出的数据结构,在队列的两端都可以进行数据的操作,一端进行入队列操作,另一端进行出队列操作,而对于栈来说,栈是先进后出的方式,而且只能在栈顶进行数据的操作。

3.http协议中post和get请求的区别

post请求:

a.提交的参数包含在消息主体内,外界看不到请求数据;

b.提交的数据大小没有限制;

c.可以设置书签

get请求:

a.提交的参数不包含在消息体内,数据放在请求行

b.提交的数据大小有限制

c.不可以设置书签

4.Quartz 2D的绘图功能的三个核心概念

上下文:主要用于描述图形写入哪里

路径:是在图层上绘制的内容

状态:用于保存配置变化的值,填充和轮廓

5.Objective-c里面的NSInteger和int的区别

NSInteger是基本数据类型对象,不是NSNumber的子类,也不是NSObject的子类。NSInteger是int或者long的别名,区别在于NSInteger会根据系统是32位还是64位来决定本身是int还是long

6.Objective-c中创建线程的方法有哪些?在主线程中执行代码的方法是什么?延时执行代码的方法是什么?

创建线程的方法主要有三种:使用NSThread创建,使用GCD的dispatch创建,使用子类化的NSOperation,然后将其加入到NSOperarionQueue中。在主线程执行代码,方法是performSelectorOnMainThread,如果想延时执行代码可以用performSelector:onThread:withObject:waitUntilDone:

7.类别,类扩展和继承的比较

类别只能添加方法,不能添加属性,类扩展和继承可以添加属性,继承可以删除,修改方法,类比不能,类扩展添加的方法必须要实现,类扩展类似私有的类别

8.UIView和UIWindow,CALayer的联系和区别

UIView是视图基类,UIViewController是视图控制器基类,UIResponder是可以用来表示一个可以在屏幕上响应触摸事件的对象。

UIWindow是UIView的子类,主要有两个作用,一是提供一个区域用来显示UIView,二是用来分发事件,一个应用基本上只有一个UIWindow。

CALayer和UIView的区别:

CALayer是继承自NSObject,而UIView的继承结构是UIResponder:NSObject,从两者的继承结构可以看出,UIView可以响应触摸事件,而CALayer是不能响应触摸事件的,两者所属框架也不同,UIView来自UIKit框架,CALayer来自QuartzCore框架,CALayer的坐标系统多了一个anchorPoint的属性。

9.__block和__weak的区别

__block不管是在ARC还是MRC下都可以使用,可以修饰对象,也可以用来修饰基本数据类型

__weak只能在ARC模式下使用,只能修饰对象,不能修饰基本数据类型

__block对象可以在block中重新赋值,__weak不可以

10.常见的http状态码有哪些

http状态码:302代表请求重定向,500以上是服务器错误,400以上是地址错误或者找不到服务器,200以上是正确,100以上是请求接受成功。

11.static关键字的作用

函数体内的static变量的作用范围为该函数体,该变量的内存只被分配一次,其值在下次调用时还是维持上一次的值

类中的static成员变量属于整个类所拥有,对类的所有对象只有一份拷贝

类中的static成员函数属于整个类所拥有,这个函数不接收this指针,所以只能访问类的static成员变量

12.堆和栈的区别

管理方式上,栈是由编译器自己去管理,堆是由程序员去管理。

申请大小上,栈是向低地址扩展的数据结构,是一块连续的内存区域,栈顶的地址和栈的最大容量是系统预先规定好的,能从获得的空间较小;堆是向高地址扩展的数据结构,是不连续的内存区域。用的是链表的方式进行存储,堆的大小受限于系统中有效的虚拟内存的大小,堆获得的空间比较灵活,也比较大。

碎片问题上,堆会频繁的申请,释放,而且不是连续的,容易造成大量的碎片,对于栈来讲,就不会造成碎片空间,因为站是先进后出,是连续的内存区域

分配效率上,栈是由编译器管理,分配效率更高一点。

时间: 2024-10-14 05:50:28

iOS基础知识点总结的相关文章

ios基础-小知识点收集(1)

不积跬步,无以至千里;不积小流,无以成江海.----荀子 收集学习ios中的小知识点,每天进步一点点. (一)@class和 #import class:只声明类,不会引入类文件,加快编译速度,防止类相互import出错:在m中仍然需要import整个类文件. import导入整个类文件,在需要使用类中的变量.函数和协议的时候需要使用. (二)静态变量static.全局变量extern.局部变量.实例变量 static:为整类而非单个对象使用,隐藏封装在类中,对外不可见. 静态变量的优点: 1.

fastclick 源码注解及一些基础知识点

在移动端,网页上的点击穿透问题导致了非常糟糕的用户体验.那么该如何解决这个问题呢? 问题产生的原因 移动端浏览器的点击事件存在300ms的延迟执行,这个延迟是由于移动端需要通过在这个时间段用户是否两次触摸屏幕而触发放大屏幕的功能.那么由于click事件将延迟300ms的存在,开发者在页面上做一些交互的时候往往会导致点击穿透问题(可以能是层之间的,也可以是页面之间的). 解决问题 之前遇到这个问题的时候,有在网上看了一些关于解决移动端点击穿透的问题,也跟着网上提出的方式进行了各项测试,最终还是觉得

iOS基础——通过案例学知识之UITableView(上)

iOS基础--通过案例学知识之UITableView(上) 对于UITableView的知识点特别多,因为它是iOS用得最多控件之一,我会尽我最大努力和语言的组织,将所有知识点介绍到位,今天要实现的效果图 吐槽 与Android对比,可以说跟ListView的实现几乎一样,跟RecyclerView一模一样 Android写起来似乎比iOS复杂一点,因为iOS大部分都被封装好了,这一点iOS做得好 对于iOS的方法的命名只能说又长又臭 知识点包括 UITableView的UITableViewD

ios基础-XCode使用技巧

(一)代码规范pragma mark 1.定义 #pragma 开头的代码是一条编译器指令,是一个特定于程序或编译器的指令.不一定适用于其它编译器或其它环境.如果编译器不能识别该指令,则会将其忽略. 2.作用 在编辑器窗格顶部,方法和函数弹出菜单中将代码分隔开,规范化代码,方便阅读查找. 3.使用 在需要加注释的地方加上#pragma mark - #pragma mark - 视图将要显示的时候 - (void)viewWillAppear:(BOOL)animated { //初始化选号的数

黑马程序员——Java I/O流基础知识点(File类)

File工具 File类就是用俩将文件或者文件夹封装对象,弥补流对象的不足--流只能操作数据,不能操作文件夹的 封装的是路径!!! 构造方法演示 1.可以将已有的未出现的文件或者文件夹封装成对象. File f1=new File("c:\\abc\\a.txt"): File f2=new File("d:\\abc","ab.txt"打印,会打印路径.:目录分隔符,为了更好地跨平台File. File类常见功能 1,创建 createNewF

iOS 基础函数解析 - Foundation Functions Reference

Foundation Functions Reference Framework Foundation/Foundation.h Declared in NSBundle.h NSByteOrder.h NSDecimal.h NSException.h NSObjCRuntime.h NSObject.h NSPathUtilities.h NSRange.h NSZone.h Overview This chapter describes the functions and function

HTML5基础知识点

今天了解html,下面是我分享的有关html的基础知识点: ①什么是html? html是一种超文本标记语言(超文本标记标签) ②html标签是html中的最基本单位 也是最重要的部分,html标签分为单标签和双标签. 单标签</>   双标签<></> html中的一些常见标签 1,<br/>换行标签    2,<hr/>水平分割线标签   3,<p></p>段落标签     4,<pre></pre&

C# .Net基础知识点解答

C# .Net基础知识点解答 1. 什么是.NET?什么是CLI?什么是CLR?IL是什么?JIT是什么,它是如何工作的?GC是什么,简述一下GC的工作方式? 通俗的讲,.Net是微软开发应用程序的一个平台: CLI是Common Language Infrastructure,是公共语言架构: CLR是Common Language Runtime,即公共语言运行时: IL是.Net编译器产生的中间代码,称为通用中间语言CIL(Common Intermediate Language),CIL

js基础知识点收集

js基础知识点收集 js常用基本类型 function show(x) { console.log(typeof(x)); // undefined console.log(typeof(10)); // number console.log(typeof('abc')); // string console.log(typeof(true)); // boolean console.log(typeof([])); // object console.log(typeof(function (