自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

转载 OC底层知识点之-多线程(四)GCD下篇

单例说起单例,我们一般使用GCD的dispath_once来创建单例对于单例,需要知道以下两个问题:1.单例为什么只执行一次,底层是如何控制的2.单例的block是在什么时候进行调用下面我们来探究一下单例为什么只执行一次再进入dispatch_once的源码前,我们先看下dispatch_once的参数1.onceToken,这是一个静态变量,由于不同位置定义的静态变量是不同的,所以静态变量具有唯一性。2.block回到我们看到会调用dispatch_once_f,其中val

2021-08-26 15:37:51 515 1

转载 OC底层知识点之-多线程(三)GCD中篇

异步函数先看下dispatch_async的底层实现上图我们发现有两个主要方法:1._dispatch_continuation_init这个方法上篇最后讲了用处:就是任务包装,将work(任务执行)绑定到dc的dc_ctxt中,将方法绑定到dc的dc_func中。2._dispatch_continuation_async是并发处理函数,主要执行block回调。_dispatch_continuation_init方法上篇讲了,这里不再过多陈述。我们看下_dispatch_continua

2021-08-25 12:56:16 284 1

转载 OC底层知识点之-多线程(二)GCD上篇

GCD简介GCD全称:Grand Central DispatchGCD是纯C语言,提供了非常多的强大函数GCD是非常高效的多线程开发方式,它并不是Cocoa框架的一部分GCD优势1.GCD 是苹果公司为多核的并⾏运算提出的解决⽅案2.GCD 会⾃动利⽤更多的CPU内核(⽐如双核、四核)3.GCD 会⾃动管理线程的⽣命周期(创建线程、调度任务、销毁线程)4.开发者只需要告诉 GCD 想要执⾏什么任务,不需要编写任何线程管理代码【总结】:GCD就是将任务添加到队列,并且指定执行任务的

2021-08-17 15:29:17 815

转载 OC基础知识点之-多线程(一)多线程基础

线程与进程线程1.线程是进程的基本执⾏单元,⼀个进程的所有任务都在线程中执⾏2.进程要想执⾏任务,必须得有线程,进程⾄少要有⼀条线程3.程序启动会默认开启⼀条线程,这条线程被称为主线程或 UI 线程进程1.进程是指在系统中正在运⾏的⼀个应⽤程序2.每个进程之间是独⽴的,每个进程均运⾏在其专⽤的且受保护的内存空间内3.通过“活动监视器”可以查看 Mac 系统中所开启的进程线程和进程的联系1.地址空间:同⼀进程的线程共享本进程的地址空间,⽽进程之间则是独⽴的地址空间。2.资源拥有

2021-08-16 19:58:44 334

转载 Swift 结构体和类

1、值类型和引用类型在iOS中虚拟内存分为五大内存分区:堆区、栈区、全局区、常量区、代码区。在Swift中根据对象在内存的存储位置不同分为值类型和引用类型。 值类型: Swift中的值类型主要有:enum,struct、Array、Dictionary、Tuple等 引用类型:Swift中的引用类型主要有:methods,class,clousre 1.1、值类型和引用类型的内存分配和管理方式Swift 中的值类型,一般存储于栈内存中(也不一定),由于栈的特性这部分内存是由CPU

2021-07-30 15:06:13 361

转载 Swift入门学习

文档在入门Swift语言之前,可以先看下苹果官方对Swift语言的介绍(中文版)Swift介绍开始着手学习Swift,可以看Swift官方文档。这篇文档是Swift Language Guide,里面涵盖了Swift中各种常用特性,值得阅读。内容包括数据类型,函数,闭包,枚举,结构体和类,属性,方法,下标,继承,构造函数,错误处理,并发编程,扩展,协议,泛型等。Swift Language Guide视频苹果2014年开源了Swift代码,其后每年Swift语言都有新的变动。WWDC

2021-07-23 19:39:43 141

转载 iOS面试小结

前言面试是职场中必经的一个步骤,在短短的几十分钟内去考察一个人的各项能力与综合素质,判断候选人与团队和团队匹配程度。从技术角度来看,面试更像是针对某些知识的讨论,寻求面试官和候选人的知识共通点,从而判断候选人是否满足团队需要。一个恰当的面试不是要难倒候选人,而是要引导候选人展示长处;从候选人熟悉的内容入手,考察技术细节和背后思考。本文便谈一谈我对iOS面试的一些思考。正文iOS的面试大致包括三大部分:基础知识、项目经历、代码考察。基础知识可以分为: a.计算机基本知识:网络原理、操作系统、编

2021-07-22 21:28:40 218

转载 2021 iOS高级面试题及答案

1.UITableview的优化方法(缓存高度,异步绘制,减少层级,hide,避免离屏渲染)缓存高度:当我们创建frame模型的时候,计算出来cell的高度的时候,我们可以将cell的高度缓存到字典里面,以cell的indexpath和Identifier作为为key。NSString *key = [[HeightCache shareHeightCache] makeKeyWithIdentifier:@"YwywProductGradeCell" indexPath:indexPat

2021-07-19 14:24:32 3217

转载 iOS面试基础知识 (二)

一、类别OC不像C++等高级语言能直接继承多个类,不过OC可以使用类别和协议来实现多继承。1、类别加载时机在App加载时,Runtime会把Category的实例方法、协议以及属性添加到类上;把Category的类方法添加到类的metaclass上。2、类别添加属性、方法1)在类别中不能直接以@property的方式定义属性,OC不会主动给类别属性生成setter和getter方法;需要通过objc_setAssociatedObject来实现。@interface TestC

2021-07-17 18:40:44 193

转载 iOS面试基础知识 (一)

一、Runtime原理Runtime是iOS核心运行机制之一,iOS App加载库、加载类、执行方法调用,全靠Runtime,这一块的知识个人认为是最基础的,基本面试必问。1、Runtime消息发送机制1)iOS调用一个方法时,实际上会调用objc_msgSend(receiver, selector, arg1, arg2, ...),该方法第一个参数是消息接收者,第二个参数是方法名,剩下的参数是方法参数; 2)iOS调用一个方法时,会先去该类的方法缓存列表里面查找是否有该方法,如果有直接调用

2021-07-14 15:04:13 240

转载 iOS开发学习指南

1. 提升你的英语水平虽然知乎er的平均水平比较高,但是现实情况是很大一部分程序员的英文水平是不太过关的。那大概需要提升到什么水平呢?我觉得达到比较流畅的阅读技术文档及书籍,配合英文字幕可以比较轻松的观看wwdc的session的水平就可以了。如果英语水平不过关,甚至没法成为一个合格的程序员。说来惭愧,我刚实习的时候,碰到陌生的API都是复制到百度查怎么用,实际上API注释+官方文档很详细准确的说明了API如何使用。我不想看官方文档及注释就是怕看那一堆堆的英文,导致API使用过程中一知半解,浪费

2021-07-08 14:45:09 512

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除