自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【iOS】对象的底层结构&内存分配

对象的底层结构要了解OC对象的底层结构,那么我们就得知道:OC本质底层实现转化其实都是C/C++代码。使用该指令将代码转换为C/C++代码。clang -rewrite-objc main.m对应文件目录下会生成main.cpp文件对象的本质对象类的本质是结构体.........

2022-07-24 17:58:31 1003

原创 【iOS】消息传递&转发

Objective-C是一门非常动态的语言,以至于确定调用哪个方法被推迟到了运行时,而非编译时。与之相反,C语言使用静态绑定,也就是说在编译期就能决定程序运行时所应该调用的函数,所以在C语言中, 如果某个函数没有实现,编译时是不能通过的。而Objective-C是相对动态的语言,运行时还可以向类中动态添加方法,所以编译时并不能确定方法到底有没有对应的实现,编译器在编译期间也就不能报错。......

2022-07-24 01:37:01 813

原创 【iOS】关联对象-在Category中添加属性

CategoryCategory是Objective-C 2.0之后添加的语言特性,分类、类别 其实都是指的Category。Category的主要作用是为已经存在的类添加方法。也可以说是将庞大的类代码按逻辑划入几个分区。Objective-C 中的 Category 就是对装饰模式的一种具体实现。它的主要作用是在不改变原有类的前提下,动态地给这个类添加一些方法。...

2022-06-11 22:20:55 1095

原创 【iOS】事件响应链&传递链

事件响应链&传递链

2022-06-05 20:18:21 1966

原创 【iOS】GCD

文章目录GCD任务和队列任务同步执行(sync)异步执行(async)队列(Dispatch Queue)串行队列(Serial Dispatch Queue)并发队列(Concurrent Dispatch Queue)同步异步、串行并行和线程的关系GCD的实现"Dispatch Queue" 是什么呢?队列的创建队列的获取任务的创建GCD什么是GCD?以下摘自苹果的官方说明。Grand Central Dispatch(GCD) 是 异步执行任务的技术之一。一般将应用的程序中记述的线程管理用的代

2022-05-28 21:59:22 376

原创 【iOS】SDWebImage

文章目录SDWebImage日常使用一些主要功能图片加载全过程源码分析架构图结构SDWebImageManager1. SDWebImageOptions2. SDWebImageManagerDelegateSDWebImageCompatSDWebImageCompat.hSDWebImageCompat.mSDWebImageSDWebImage具有缓存支持的异步映像下载程序。并添加了像UI元素分类类UIImageView、UIButton、MKAnnotationView,可以直接为这些UI元

2022-05-15 17:49:49 851

原创 【iOS】blocks

文章目录block什么是block?block的本质block的变量捕获block语法Block变量block的三种类型NSGlobalBlockNSStackBlockNSMallocBlockblock继承于NSObject堆Block和栈Block的区别block的循环引用block什么是block?blocks是C语言的扩充功能。用一句话来表示Blocks的扩充功能:带有自动变量(局部变量)的匿名函数。但是在C语言的标准中不允许存在匿名函数。通过Blocks,源代码中就可以使用匿名函数。b

2022-05-04 10:06:27 248

原创 【iOS】内存五大分区

文章目录五大分区栈区堆区常量区静态区代码区如何查看一个对象在堆区 / 栈区注意说到内存分区,这里的内存指的就是RAM(random access memory)。内存分为五个区:栈区(系统管理的地方)、堆区(程序员控制的地方)、静态区(全局区)、常量区、代码区五大分区栈区栈是由编译器自动分配释放来管理内存。用户存放程序临时创建的变量、存放函数的参数值、局部变量等。由于栈的先进后出特点,所以特别适合用来做保存/恢复现场的操作。从这个吧意义上,我们可以把栈看做一个临时寄存、交换的内存区。栈区

2022-04-24 18:22:24 1906

原创 【iOS】ARC(浅学版)

文章目录前言基础知识强引用和弱引用强引用弱引用两者区别应用场景strong和copy的区别前言虽然之前看了小白书Effective Objective-C 2.0关于内存管理,里面讲了关于ARC的相关内容,但最近发现好像只是简单的过了一遍书,没有具体的学到什么,很多知识点还是没有理解到位导致忘的的快。所以这里重新学习一遍ARC的相关知识,会持续更新。基础知识强引用和弱引用在iOS中,不可避免的会用的强引用和弱引用,特别是在block块中使用,关键词也很直白就是weak和strong。因为OC中采

2022-04-17 20:02:58 2408 1

原创 【iOS】使用AFNetworking 3.0进行网络请求(上传头像)

文章目录

2022-03-27 14:12:08 3404 1

原创 【iOS】使用NSURLSession网络请求

文章目录前言NSURLSessionNSURLSession替换NSURLConnectionGet请求流程1. 确定请求路径2. 创建请求对象3. 获得会话对象3. 根据会话对象创建一个Task(发送请求)5. 解析服务器返回的数据6. 执行任务Post请求流程修改请求方法为POST设置请求体Get与Post请求比较info.plist文件配置遇到的问题前言最近写项目开始和后台对接了,测试接口需要用到网络请求相关知识,才能和后台进行交互。暂时学习了使用NSURLSession(现在流行的苹果网络框

2022-03-20 03:05:13 1570

原创 【iOS】UICollectionView基本使用

文章目录前言九宫格类布局使用FlowLayout实现瀑布流前言UICollectionView 和 UICollectionViewController 类是iOS6 新引进的API,用于展示集合视图,布局更加灵活,可实现多列布局,用法类似于UITableView 和 UITableViewController 类。使用UICollectionView 必须实现UICollectionViewDataSource,UICollectionViewDelegate,UICollectionViewDe

2022-03-13 18:22:30 4448

原创 【iOS】UIView的动画效果

文章目录前言位置动画透明度、颜色动画透明度颜色颜色无限渐变效果缩放动画无限放大缩小旋转动画重复动画、延时动画关于延时动画关于重复动画缓冲动画注意事项登录页面动画效果前言在写项目时,生硬的出场显示动画让APP缺少了观感体验,基础的动画效果是必不可少的主要围绕着[UIView animateWithDuration:2 animations:^{}];函数进行变化位置动画PositionAnimation可以实现View的移动,最简单的就是X轴,Y轴的移动。可以利用在上述[UIView anima

2022-02-27 19:35:32 1821

原创 【Effective Objective-C】块与大中枢派发

文章目录前言理解“块”这一概念块的基础知识块的内部结构全局块、栈块及堆块要点:为常用的块类型创建typedef要点:用handler块降低代码分散程度要点:用块引用其所属对象时不要出现保留环要点:多用派发队列,少用同步锁要点多用GCD,少用performSelector系列方法要点:前言开发应用程序时,最糟糕的事莫过于程序因UI线程阻塞而挂起了,在iOS系统中,阻塞过久可能会使应用程序终止执行,所幸苹果公司以全新的方式设计了多线程,并且当前多线程的核心就是“块”与“大中枢派发”,“块”是一种可在C、C

2022-02-20 18:26:00 1612

原创 【Effective Objective-C】内存管理

文章目录前言理解引用计数引用计数工作原理属性存取方法中的内存管理自动释放池保留环要点以ARC简化引用计数前言在OC这种面相对象的语言里,内存管理是个重要概念。要想用一门语言写出内存使用效率高而且又没有bug代码,就得掌握其内存管理模型的种种细节。一旦理解了这些规则,你就会发现,其实OC的内存管理没那么复杂,而且有了“自动引用计数”(Automatic Reference Counting,ARC)之后,就变得更为简单了。ARC几乎把所有内存管理事宜都交由编译器来决定,开发者只需专注于业务逻辑。理

2022-02-13 13:38:58 1540 1

原创 【Effective Objective-C】第二章

文章目录理解“属性”合成存取的产生@dynamic关键字属性特质原子性读/写权限内存管理语义要点“对象等同性”容器中可变类的等同性要点以“类族模式”隐藏实现细节创建类族Cocoa里的类族要点在既有类中使用关联对象存放自定义数据对象关联类型管理关联对象的方法要点:理解“属性”“属性”(property)是OC的一项特性,用于封装对象中的数据。OC对象通常会把其所需要的数据保存为各种实例变量。合成存取的产生如果代码使用了编译器计算出来的偏移量,那么在修改类定义之后必须重新编译,否则就会出错。例如:某

2022-01-23 03:09:07 397

原创 【Effective Objective-C】第一章

文章目录在类的头文件中尽量少引入其他头文件多用字面量语法,少用与之等价的方法字面数值字面量数组字面量字典在类的头文件中尽量少引入其他头文件与C++一样,Objective-C也是用“头文件”与“实现文件”来区隔代码。用Obejctive-C语言编写“类”的标准方式为:以类名做文件名,分别创建两个文件,头文件后缀用.h,实现文件后缀用.m。创建好一个类之后,其代码看上去如下所示://EOCPerson.h#import <Foundation/Foundation.h>@interfa

2022-01-16 14:10:05 1845

原创 【iOS】两个ViewController页面间的头文件互相引用

当我写了两个页面:AviewController和BviewController,并且我想在AviewController页面中使用到BviewController,在BviewController页面中使用到AviewController。此时我需要在AviewController.h中导入BviewController.h的头文件,在BviewController.h中导入AviewController.h的头文件,如下在BViewController.h导入AViewController.h.

2022-01-06 01:12:39 1790 1

原创 【iOS】高德地图SDK的详细使用

文章目录前言需要用到的库显示基础地图地图定位位置搜索路线规划前言关于如何调用高德地图的SDK,项目前需要下载哪些库,还有正式开始写项目前的一些注意事项可见这篇博客【iOS】调用百度、高德地图SDK需要用到的库PodFile中写入以下:platform :ios, '7.0'target '你的工程名字' dopod 'AMap3DMap' pod 'AMapLocation'pod 'AMapSearch'endAMap3DMap是用来显示地图等有关操作的库AMapLocatio

2021-12-07 22:41:52 2785

原创 【iOS】调用百度、高德地图SDK

文章目录调用百度地图SDK调用高德地图SDK调用百度地图SDK先去百度地图开放平台登陆账号,如果没有注册过需要先注册一个账号。然后进入控制台,选择我的应用,进行创建应用。其中安全码Bundle Identifier在自己的工程项目中可见然后你可以在自己的应用中看到你的AK,后续会用到。然后是下载百度地图SDK,利用cocopods下载第三方库比较方便在当前工程文件(.xcodeproj)所在文件夹下,打开终端创建Podfile:touch Podfile编辑Podfile内容如

2021-12-02 22:30:39 2729

原创 【iOS】MVVM模式

文章目录什么是MVVM?MVVM的通讯关系图解MVVM 的注意事项MVVM 的使用建议MVVM中数据的双向绑定MVVM模式的优缺点什么是MVVM?iOS中,我们使用的大部分都是MVC架构,虽然MVC的层次明确,但是由于功能日益的增加,代码的维护,更多的代码被写在了Controller中,这样Controller就显得非常臃肿。为了给Controller瘦身,后来又从MVC衍生出了一种新的架构模式MVVM架构。Model: 数据层,业务逻辑处理、数据控制(本地数据、网络加载数据)。ViewCo

2021-11-28 19:33:27 5465

原创 【iOS】MVP模式

文章目录什么是MVP模式?图解从MVC到MVP苹果的MVC为何要从MVC到MVP?MVPMVP模式下的工程MVP模式的优缺点什么是MVP模式?MVP模式是MVC模式的一个演化版本,MVP全称Model-View-Presenter。(关于MVC模式可见这篇文章)Model:与MVC中的model没有太大的区别。主要提供数据的存储功能,一般都是用来封装网络获取的json数据的集合。Presenter通过调用Model进行对象交互。View:这里的View与MVC中的V又有一些小差别,这个View

2021-11-27 22:58:58 1367

原创 【C语言】LeetCode的链表题复习

文章目录前言LeetCode 206. 反转链表LeetCode 143. 重排链表前言因为大一学习链表时草草了事,对于链表的一些算法题做得非常的少,因而在大二上学期这段时间学习数据结构时,链表-树-图的基础知识越来越差,更不用说做树、图的算法题了。所以在上周完成iOS方向的一个项目后,这段自由支配的时间我选择用来重新巩固基础,毕竟以后不论实习还是工作面试还是会考算法的。以下挑了这个周做的一些链表基础但很重要的题目LeetCode 206. 反转链表LeetCode 206. 反转链表方

2021-11-20 20:01:42 475 2

原创 【iOS】知乎日报第四周总结

文章目录关于实现自适应cell高度使用FMDB实现收藏功能什么是FMDB视图层级顺序本周将知乎日报仿写任务总体上算是完成了,这周主要完善了评论功能和收藏功能,学习到了自适应cell高度和使用FMDB数据库的用法关于实现自适应cell高度在写评论页面时,因为请求到评论的字数不一致,会导致评论的行数不同,因此想让单元格的高度随着行数的变化而自适应。一开始想到的办法比较无脑,比较暴力没有技术含量。就是算出评论文字占label每一行的宽度,每一行的高度,再用总字数在此font下所需要的宽度去除以每一行

2021-11-14 23:06:46 2415

原创 【iOS】知乎日报第三周总结

关于WKWebView在点击单元格后进入webView后,创建一个存储网页url的数组,使用通知传值将点击的是第几个单元格的cellNumber传到网页中。在使用该网页的url时直接访问数组中的第cellNumber个元素即可。...

2021-11-07 21:42:28 2028

原创 【iOS】知乎日报第二周总结

文章目录一. 关于轮播图定时器的一些bug二. 关于刷新新数据三. 关于设置网络图片一. 关于轮播图定时器的一些bug在写自动轮播图时,定时器在手动拖拽轮播图时需要停止计时器,在结束拖拽后,在重新启动定时器。然而NSTime并没有停止和重新启动的属性,只有销毁定时器。所以所谓的停止计时器的功能就得依靠销毁来实现,而重新启动就意味着重新定义一遍该定时器。就达到了停止与启动的效果。- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView

2021-10-31 20:14:46 1629

原创 【iOS】JSONModel的基本使用

文章目录什么是JSONModel?核心数据模型类JSONModelJSON的一些基本使用JSON转化为模型模型转换为字典模型转换为字符串设置所有属性可选(所有属性值可以为空)对于集合、嵌套型数据设置下划线自动转驼峰实例解析遇到的问题什么是JSONModel?做移动端开发,解析网络数据是必不可少的工作之一。iOS原生框架很早前就已经提供了将JSON数据直接映射成数组或者字典对象的方法,并且结合KVC,也可以将字典数据直接赋值给对象。但是这种方式十分不灵活,例如如果网络数据中的字段与我们数据模型中的字段不

2021-10-14 17:30:32 1395

原创 【iOS】仿写计算器

文章目录前言使用Masonry在View中布局判错处理数据处理git链接前言这次仿写计算器是第一次使用MVC设计模式写一个小demo,对于MVC设计模式可见这篇博客 【iOS】MVC设计模式。也是第一次使用Masonry库进行view的页面布局,关于Masonry的使用可见这篇博客【iOS】Masonry的简单使用。其次,关于计算器中对字符串处理、计算等逻辑问题主要用到了栈的思想,关于c语言中四则运算可见这篇博客 用栈实现四则运算。虽然是用Objective-C写,但是在OC中可以调用许多方法处理,可以

2021-10-08 22:13:02 269

原创 【c++】用栈实现四则运算

文章目录问题分析算法思路图解代码实现问题分析Exp = a * b + c - d / f确定计算规则,即明确运算符的优先级确定当前处理字符是运算符还是操作数每个运算符的运算次序要由它之后的一个运算符来定算法思路Exp = # a * b + c - d / f #设立操作数栈和操作符栈设表达式的结束符为“#”,预设运算符栈的栈底为“#”若当前字符是操作数,则直接压入操作数栈若当前字符是操作符,则与操作符栈的栈顶运算符进行优先级比较若优先级高于栈顶运算符则进栈

2021-09-26 21:05:13 1904

原创 【iOS】引用计数

文章目录什么是自动引用计数?内存管理/引用计数内存管理的思考方式release和autorelease的区别无法释放非自己持有的对象什么是自动引用计数?顾名思义,自动引用计数(ARC, Automatic Reference Counting)是指内存管理中对引用采取自动计数的技术。以下摘自苹果的官方说明。在Objective-C中采用Automatic Reference Counting (ARC)机制,让编译器来进行内存管理。在新一代Apple LLVM编译器中设置ARC为有效状态,就无需再次

2021-09-25 21:13:03 420

原创 【iOS】Present和Push的区别

文章目录简介push样例present样例git地址简介push与present都可以推出新的界面。present与dismiss对应,push和pop对应。present只能逐级返回,push所有视图由视图栈控制,可以返回上一级,也可以返回到根ViewController,或其他ViewController。present一般用于不同业务界面的切换,push一般用于同一业务不同界面之间的切换pushpop一共分为两类, pop是navigationController的方法。第一

2021-09-16 20:46:13 207

原创 【iOS】单例模式

文章目录什么是单例模式什么是单例模式简单的来说,一个单例类,在整个程序中只有一个实例,并且提供一个类方法供全局调用,在编译时初始化这个类,然后一直保存在内存中,到程序(APP)退出时由系统自动释放这部分内存。单例模式是一种常用的设计模式,对于一个单例类,必须保证任意时刻只有一个单例对象,并且自行实例化该对象,并向整个系统提供该对象,也就是说无论实例化单例对象多少次,都只能创建出一个对象,该对象是全局的能够整个系统所访问单例对象很像c语言中全局变量,单例类可以实现不同对象之间的数据共享...

2021-09-15 21:35:40 154

原创 【iOS】ViewController的生命周期

文章目录前言生命周期初始化加载视图销毁视图注意代码展示git地址总结前言在iOS开发中,UIViewController扮演者非常重要的角色,它是视图view和数据model的桥梁,通过UIViewController的管理有条不紊的将数据展示在视图上。作为UIKit中最基本的一个类,一般复杂的项目都离不开UIViewController作为基类。所以了解UIViewController的整个生命周期是有必要的。生命周期ViewController生命周期会经历初始化、加载视图、销毁视图、生命结束等

2021-09-14 21:57:50 388

原创 【iOS】MVC设计模式

文章目录什么是MVC?MVC模式原理图解关于outletMVC样例(登陆/注册)关于 initWithFrame 方法git什么是MVC?MVC最早存在于桌面程序中的, M(model)是指业务数据, V(view)是指用户界面, C(controller)则是控制器. 在具体的业务场景中, C作为M和V之间的连接.负责获取输入的业务数据, 然后将处理后的数据输出到界面上做相应展示, 另外, 在数据有所更新时, C还需要及时提交相应更新到界面展示.在上述过程中, 因为M和V之间是完全隔离的, 所以

2021-09-09 20:52:33 419

原创 【iOS】折叠cell的使用

对于tableView中单元格的收起/展开思路:创建好tableView后,把每一行单元格填充好对应的信息,在没有点击展开的情况下,tableView的frame还是显示的是第一个head单元格。当我们点击展开后,此时更改tableView的frame大小至能完全展示所有单元格的信息。主要在于点击 展开/收起button 的事件响应函数去处理tableView的整体高度- (void)pressFoldButton:(UIButton*)button { if (button.selected

2021-09-04 15:26:53 312

原创 【iOS】Masonry的简单使用

文章目录使用CocoaPods引入Masonry第三方库Masonry的基本使用使用CocoaPods引入Masonry第三方库1. 搜索源是否存在:pod search masonry如果有的话会帮我们标识需要的库如果第一次使用,会出现:Setting up CocoaPods master repo这个会跑很长的时间,是在配置CocoaPods,要一直翻着墙。在一大堆显示后有Setup completed表示配置完成,下次使用就很快了。2. 创建工程:在创建一个项目工程后,cd +

2021-09-03 14:36:38 448

原创 【iOS】暑假第三周任务总结

文章目录折叠cell聊天室弹出键盘,屏幕上移管理系统属性关键字折叠cell完善了share里关于折叠cell的使用在share里写的折叠cell比较简单,仅仅使用一个button控制一个tableView的frame,在button关闭时,tableView的frame只是显示第一个cell,当button开启时,改变tableView的frame,将tableView中的cell全部显示出来聊天室补充了share里的私信功能难点:将每发出的一条信息能获取该信息的所占用的高度,然后将高度值

2021-08-07 12:19:20 101

原创 【iOS】属性关键字

文章目录自动合成存取@property@synthesize@dynamic一.读写性控制二.setter相关修饰符属性分为三大类:读写性控制setter相关修饰符原子性属修饰符自动合成存取@property@property其实是在编译阶段由编译器自动帮我们生成setter方法,getter方法的@synthesize当我们在实现文件中不写@synthesize propertyName时,在Xcode 4.5之前的版本不会帮我们自动实现setter和getter方法,系统

2021-08-07 10:54:12 96

原创 【iOS】懒加载

文章目录什么是懒加载懒加载的本质懒加载的使用懒加载的好处使用懒加载时需要注意的点什么是懒加载懒加载也称延迟加载,说的通俗一点,就是在开发中,当程序中需要利用的资源时。在程序启动的时候不加载资源,只有在运行当中需要一些资源时,再去加载这些资源,即在需要的时候才加载(效率低,占用内存小)。懒加载的本质本质上就是对一个实例的getter方法的重写。懒加载的使用例如我想使用懒加载在视图控制器上呈现出一个imageView首先在.h文件中设置一个imgeView属性@property(nonato

2021-08-05 11:20:59 151

原创 【iOS】多界面传值的五种方法

文章目录协议传值和属性传值Block传值关于Block块使用Block进行传值KVO传值概述使用KVO传值通知传值概述通知传值的使用协议传值和属性传值协议传值和属性传值Block传值Block传值与协议传值都适用于从后一个页面向前一个页面传值(反向传值)。关于Block块代码块本质上是和其他变量类似。不同的是,代码块存储的数据是一个函数体。使用代码块是,你可以像调用其他标准函数一样,传入参数数,并得到返回值。使用Block进行传值将B页面中Alabel.text传回A页面中Blabel.

2021-08-05 10:14:33 950

空空如也

空空如也

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

TA关注的人

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