首页
学习
活动
专区
工具
TVP
发布

xx_Cc的学习总结专栏

对iOS学习知识的总结,便于自己使用到的时候查阅。请随意关注订阅。
专栏作者
46
文章
71235
阅读量
32
订阅数
iOS底层原理总结 - 探寻Runtime本质(四)
首先来看一道面试题。 下列代码中Person继承自NSObject,Student继承自Person,写出下列代码输出内容。
xx_Cc
2018-08-02
8740
iOS底层原理总结 - 探寻Runtime本质(二)
Class的结构 通过上一章中对isa本质结构有了新的认识,今天来回顾Class的结构,重新认识Class内部结构。 首先来看一下Class的内部结构代码,对探寻Class的本质做简单回顾。 struct objc_class : objc_object { // Class ISA; Class superclass; cache_t cache; // formerly cache pointer and vtable class_data_bit
xx_Cc
2018-07-04
1.1K0
iOS底层原理总结 - 探寻Runtime本质(三)
方法调用的本质 本文我们探寻方法调用的本质,首先通过一段代码,将方法调用代码转为c++代码查看方法调用的本质是什么样的。 xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc main.m [person test]; // --------- c++底层代码 ((void (*)(id, SEL))(void *)objc_msgSend)((id)person, sel_registerName("test")); 通过上述源码可以看出c++底层代码
xx_Cc
2018-07-03
4960
iOS底层原理总结 - 关联对象实现原理
面试题 Category能否添加成员变量?如果可以,如何给Category添加成员变量? 答:不能直接添加成员变量,但是可以通过runtime的方式间接实现添加成员变量的效果。 RunTime为Category动态关联对象 使用RunTime给系统的类添加属性,首先需要了解对象与属性的关系。我们通过之前的学习知道,对象一开始初始化的时候其属性为nil,给属性赋值其实就是让属性指向一块存储内容的内存,使这个对象的属性跟这块内存产生一种关联。 那么如果想动态的添加属性,其实就是动态的产生某种关联就好了。而想要
xx_Cc
2018-06-19
1.2K0
iOS底层原理总结 - 探寻block的本质(一)
面试题 block的原理是怎样的?本质是什么? __block的作用是什么?有什么使用注意点? block的属性修饰词为什么是copy?使用block有哪些使用注意? block在修改NSMutableArray,需不需要添加__block? 首先对block有一个基本的认识 block本质上也是一个oc对象,他内部也有一个isa指针。block是封装了函数调用以及函数调用环境的OC对象。 探寻block的本质 首先写一个简单的block int main(int argc, const char * a
xx_Cc
2018-06-19
1K0
iOS底层原理总结 - 探寻Runtime本质(一)
isa的本质 在学习Runtime之前首先需要对isa的本质有一定的了解,这样之后学习Runtime会更便于理解。 回顾OC对象的本质,每个OC对象都含有一个isa指针,__arm64__之前,isa仅仅是一个指针,保存着对象或类对象内存地址,在__arm64__架构之后,apple对isa进行了优化,变成了一个共用体(union)结构,同时使用位域来存储更多的信息。 我们知道OC对象的isa指针并不是直接指向类对象或者元类对象,而是需要&ISA_MASK通过位运算才能获取到类对象或者元类对象的地址。今天来
xx_Cc
2018-06-19
8350
iOS底层原理总结 - 探寻block的本质(二)
上一篇文章iOS底层原理总结 - 探寻block的本质(一)中已经介绍过block的底层本质实现以及了解了变量的捕获,本文继续探寻block的本质。 block对对象变量的捕获 block一般使用过程中都是对对象变量的捕获,那么对象变量的捕获同基本数据类型变量相同吗? 查看一下代码思考:当在block中访问的为对象类型时,对象什么时候会销毁? typedef void (^Block)(void); int main(int argc, const char * argv[]) { @autore
xx_Cc
2018-06-04
9710
iOS-网络编程(一)HTTP协议
一. 网络编程基础 在移动互联网时代,几乎所有应用都需要用到网络,只有通过网络跟外界进行数据交互、数据更新,应用才能保持新鲜、活力。一个好的移动网络应用不仅要有良好的UI和良好的用户体验也要具备实时更新数据的能力。网络编程便是一种实时更新应用数据的常用手段也是开发优秀网络应用的前提和基础。 1. 在网络编程中,有几个必须掌握的基本概念 客户端(Client):移动应用(iOS、android等应用) 服务器(Server):为客户端提供服务、提供数据、提供资源的机器 请求(Request):客户端向服务
xx_Cc
2018-05-10
1.5K0
OC-基础总结(二)
OC基础总结 重新回过头看这些基础知识,对许多知识点都有新的认识,拥有坚实的基础才能更快的成长。 OC内存管理 - 基础与MRC 内存管理概述 内存管理 内存的作用:存储数据。 1). 如何将数据存储到内存之中。 声明1个变量,然后将数据存储进去。 2). 当数据不再被使用的时候,占用的内存空间如何被释放。 内存中的五大区域 栈: 局部变量,当局部变量的作用域被执行完毕之后,这个局部变量就会被系统立即回收。 堆: OC对象,使用C函数申请的空间。需要我们自己进行内存管理 BSS段: 未初始化的
xx_Cc
2018-05-10
8940
OC-基础总结(一)
OC基础总结 重新回过头看这些基础知识,对许多知识点都有新的认识,拥有坚实的基础才能更快的成长。 #improt OC程序的源文件的后缀名是.m m代表message表示消息机制。main 仍然是OC程序的入口和出口,main函数有一个int类型的返回值,代表程序的结束状态。 #import预处理指令,是#inlcude指令的增强版,作用是将文件的内容在预编译的时候拷贝到写指令的地方。 #import做了优化,同一个文件无论#import多少次,都只会包含一次。 简要原理:#import指令在包含文件的时
xx_Cc
2018-05-10
1.2K0
iOS底层原理总结 - 探寻OC对象的本质
iOS底层原理总结 - 探寻OC对象的本质 对小码哥底层班视频学习的总结与记录。面试题部分,通过对面试题的分析探索问题的本质内容。 面试题:一个NSObject对象占用多少内存? 探寻OC对象的
xx_Cc
2018-05-10
1.2K0
iOS底层原理总结 - 探寻Class的本质
iOS底层原理总结 - 探寻Class的本质 对小码哥底层班视频学习的总结与记录。面试题部分,通过对面试题的分析探索问题的本质内容。 上接 iOS底层原理总结 - 探寻OC对象的本质 Class的本质 我们知道不管是类对象还是元类对象,类型都是Class,class和mete-class的底层都是objc_class结构体的指针,内存中就是结构体,本章来探寻Class的本质。 Class objectClass = [NSObject class]; Class objectMetaCla
xx_Cc
2018-05-10
7760
iOS底层原理总结 - RunLoop
面试题 讲讲 RunLoop,项目中有用到吗? RunLoop内部实现逻辑? Runloop和线程的关系? timer 与 Runloop 的关系? 程序中添加每3秒响应一次的NSTimer,当拖动tableview时timer可能无法响应要怎么解决? Runloop 是怎么响应用户操作的, 具体流程是什么样的? 说说RunLoop的几种状态? Runloop的mode作用是什么? 一. RunLoop简介 运行循环,在程序运行过程中循环做一些事情,如果没有Runloop程序执行完毕就会立即退出,如果有Ru
xx_Cc
2018-05-10
1.4K0
C - 指针C语言指针的总结
C语言指针的总结 1. 变量 不同类型的变量在内存中占据不同的字节空间。 内存中存储数据的最小基本单位是字节,每一个字节都有一个内存地址,这个地址是一个十六进制的数。 声明一个变量,在内存中是从高字节向低字节分配连续的指定字节数的空间。 任何数据在内存中都是以其二进制的补码形式存储的,低位存储在低字节,高位存储在高字节。 变量的值:存储在变量中的数据,叫做变量的值。 变量的地址:一个变量是由一个或者多个字节组成的,组成这个变量的低字节的地址,就是这个变量的地址。 如何取出变量的地址:使用&(取地址运算符)运
xx_Cc
2018-05-10
4.1K0
iOS-Foundation框架中常用的类
Foundation框架中最常用的类。 Foundation框架中最我们经常用的类大致有NSString、NSArray、NSDictionary等等,虽然不需要将每一个类中提供了什么方法都记下来,但是需要做到心中有数,知道Foundation框架提供了什么样的方法,能够达到什么效果,用到的时候直接去API中查找即可,避免因为不知道有这些方法,而走弯路。 NSString NSString创建与内存存储 NSString是1个数据类型,用来保存OC字符串,NSString的本质是1个类,既然是1个类,所以,
xx_Cc
2018-05-10
1.6K0
iOS-QQ音乐播放器的简单实现
一. QQ音乐播放器的简单实现 每个音乐播放器的实现都大致相同,个人认为难点在于歌曲播放与Slider的同步,歌词的解析与播放的同步。这些过程虽然繁琐,但是理解起来并不难。先来看看简单实现结果吧。 Q
xx_Cc
2018-05-10
2.7K0
iOS-RunTime,不再只是听说
一. RunTime简介 RunTime简称运行时。OC就是运行时机制,也就是在运行时候的一些机制,其中最主要的是消息机制。 对于C语言,函数的调用在编译的时候会决定调用哪个函数,如果调用未实现的函数就会报错。 对于OC语言,属于动态调用过程,在编译的时候并不能决定真正调用哪个函数,只有在真正运行的时候才会根据函数的名称找到对应的函数来调用。在编译阶段,OC可以调用任何函数,即使这个函数并未实现,只要声明过就不会报错。 二. RunTime消息机制 消息机制是运行时里面最重要的机制,OC中任何方法的调用,
xx_Cc
2018-05-10
1.2K0
iOS-视频播放器的简单封装
iOS-视频播放器的简单封装 封装视频播放器,首先需要了解视频播放器的实现,iOS9之前可以使用MediaPlayer来进行视频的播放,iOS9之后系统推荐使用AVFoundation框架实现视频的播放。 如果仅仅是播放视频两者的使用都非常简单,但是相比MediaPlayer,AVPlayer对于视频播放的可控制性更强一些,可以通过自定义的一些控件来实现视频的播放暂停等等。因此这里使用AVPlayer的视频播放。 封装视频播放器,首先需要实现视频播放器,然后再去考虑怎样封装可以让以后自己使用起来方便快捷。
xx_Cc
2018-05-10
1.8K0
C - 基础总结
1. 程序运行模式 当我们将一个程序交给CPU去执行的时候,CPU只会执行main函数中的代码,别的地方的代码是不会执行的,因此如果想要在CPU中执行程序就必须要在main函数中从上到下一句一句执行代码,并且只有在上一句执行完毕之后才会执行下一句。 mian是程序的入口,当mian函数中的代码执行完毕之后就会自动结束,所以也是出口。 2. 计算机三大件 CPU : 中央处理器,处理数据的,负责计算,协调其他硬件相互和谐的工作。 内存 :存储数据 ,临时,效率高,通过电路存储,电子式。 硬盘 :存储数据 ,
xx_Cc
2018-05-10
1.1K0
六天完成一个简单iOS App - 第六天
第六天任务 推荐标签页面的完成 圆形头像的设置和封装 评论界面的完成 新帖界面的完成 发布界面的完成 推荐标签页面的完成 点击精华页面左上角按钮来到推荐标签界面。 推荐标签界面 推荐标签的实
xx_Cc
2018-05-10
1.2K0
点击加载更多
社区活动
Python精品学习库
代码在线跑,知识轻松学
热点技术征文第五期
新风口Sora来袭,普通人该如何把握机会?
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·干货材料·成员作品·最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档