自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【iOS】分类,扩展与关联对象

上一篇章我们探究了类与对象的底层,这一篇我们探究一下分类,扩展与关联对象由于分类没有成员变量列表,所以无法添加成员变量。与此同时他有属性列表,但只会声明属性,不会去实现set与get方法。如果要在分类中使用属性就需要使用关联对象分类在运行时被整合到类中,扩展在编译时被整合到类中,因此分类中方法不实现不会报警,扩展会扩展常用于声明私有属性与方法如果分类中的方法与类中方法重名,分类中的方法会替代类中的方法。

2024-04-23 17:06:32 643 2

原创 【iOS】类与对象底层探索

这篇文章主要探索OC对象的本质首先我们需要明白我们平时编写的OC代码,底层实现都是C\C++代码通过这篇文章我们得知所有对象都有isa属性所有对象都是由objc_object继承而来的objc_class中存放着对象的各种信息,实例对象则存放成员变量,类对象则存放实例方法与属性等,元类对象则存放类方法,符合单一职责原则isa 指针指向对象所属的类可以从bits中的rw中查找方法属性,但不能查找到成员变量,成员变量存储在ro中,这也是为什么分类不能添加成员变量的原因。

2024-04-23 13:55:18 679

原创 【iOS】SDWebImage源码阅读笔记

最近基本已经将项目完结,这个月开始专心学习源码,将会陆续学习SDWebImage,AFNetworking以及JsonModel的源码由此我们总结一下SDWebImage的调用流程首先我们会进入方法中,然后进入sd-InternalmageWithURL方法中,在这个方法中我们首先通过取消正在运行的任务,任务是通过方法取消的,这一步是为了避免同一资源被重复下载,接着我们初始化(这里因为是单例,所以只初始化一次),接着进行一系列配置后调用方法,首先检查URL是否在错误的集合中,如果没有就调用。

2024-04-15 15:00:04 848

原创 【iOS】UITableView性能优化

最近基本将我的第二个项目完结,之后会记录一些源码的学习以及优化项目的一些方法,而在iOS中是最为常用的一种控件,今天我们就从性能优化开始讲起UITableView的性能优化涉及到了许多层面,下到底层的Layer属性,上到第三方库SDWebImage与RunLoop,这些东西的实现都十分巧妙,还有很长一段路需要学习这里笔者写一下Tableview 性能优化方法总览实现Tableview的懒加载以及cell的复用。

2024-04-07 18:33:24 1069

原创 【iOS】Leaks使用

最近写完项目后在学一些项目的优化内容,刚好了解到instruments有Leaks这个工具,当我在我的项目中使用恰好检测出了内存泄漏的问题,特此记录但是很遗憾,虽然我的代码虽然用Leaks工具发现了内存泄漏问题,但并无法定位,这可能是因为问题出在一些第三方库中,当然也可能确实是自己的问题,但是自己找不到,但总归是了解了一种定位内存泄漏的方法,目前的问题以我的知识还无法解决,以后学会了再加以补充。

2024-04-07 10:32:07 352

原创 【iOS】Blocks

先前看了小蓝书上的block,发现不甚了解,现重新学习blockBlocks 是 C 语 言 的 扩 充 功 能。可 以 用 一 句 话 来 表 示 Blocks 的 扩 充 功 能 :带 有 自 动 变 量 (局 部变量)的匿名函数。我们把这句话拆分开来理解自动变量也就是局部变量匿名函数即不带名称的函数。

2024-03-18 13:36:14 1059 1

原创 【iOS】ARC学习

在学习ARC之前,先来复习一下内存管理以及autorelease的实现。

2024-03-14 11:47:18 929

原创 【iOS】系统框架

本次博客撰写小蓝书的最后一章系统框架Objective-C的系统库包含相当多的collection 类,其中有各种数组、各种字典、各种 setoFoundation框架定义了这些collection及其他各种collection所对应的Objective-C类。与 之相似,CoreFoundation 框架也定义了一套C语言API,用于操作表示这些collection 及其他 各种collection 的数据结构。例如,

2024-02-19 19:14:19 1251 1

原创 【iOS】GCD学习

本博客撰写一下小蓝书的GCDGrand Central Dispatch(GCD)是异步执行任务的技术之一。一般将应用程序中记述的线程管理用的代码在系统级中实现。开发者只需要定义想执行的任务并追加到适当的Dispatch Queue中,GCD就能生成必要的线程并计划执行任务。由于线程管理是作为系统的一部分来实现的,因此可统一管理,也可执行任务,这样就比以前的线程更有效率。//让处理在后台线程中执行/**长时间处理*例如AR用画像识别*例如数据库访问*//*

2024-02-19 04:01:24 1008

原创 【Effective Objective - C 2.0】——读书笔记(五)

要管理其内存,ARC就必须在“回收分配给对象的内存”是生产必要的清理代码。

2024-02-17 04:02:57 966

原创 【Effective Objective - C 2.0】——读书笔记(四)

如果类中本来就有此方法,而分类又实现了一次,那么分类中的方法就会覆盖原来的那一份实现代码。并且我们之前有说过私有方法的命名,通过特殊的前缀将私有方法指示出来,那么我们学了分类规划之后,我们还可以通过创建一个分类,这个分类其中全是私有方法,通过这种方法将这些私有方法都规划到一个类中,当然其还是的遵循之前的命名规则。”将其的“==只读”属性改为“可读写”==的,那么这样下来,在外部看来他就是一个“只读”的属性,但是你可以在其内部自定义的设置其值了,他在内部来说就是“可读写”的了。

2024-02-13 03:00:41 1021

原创 【Effective Objective - C 2.0】——读书笔记(三)

使用Cocoa 创建应用程序时一定要注意,Apple 宣称其保留使用所有“两字母前缀” (two-letter prefix)的权利,所以你自己选用的前缀应该是三个字母的。十六、提供全能初始化方法所有对象均要初始化。初始化时,有些对象可能无须开发者向其提供额外信息,不过一般来说还是要提供的。以iOS的UI框架UIKit为例,其中有个类叫做UITableViewCell,初始化该类对象时,需要指明其样式及标识符,标识符能够区分不同类型的单元格。由于这种对象的创建成本较高,所以绘制表格时可依照标识符来复用,

2024-02-12 05:06:00 1305

原创 【Effective Objective - C 2.0】——读书笔记(二)

这是一篇为了快手✌️xmy学长写的博客关联对象的出现在iOS开发里,分类是不能添加成员变量的,只允许给分类添加属性,所以出现了关联对象具体使用后面应该会学到,这里直接进行要点总结。要点总结可以通过“关联对象”机制来把两个对象连起来。定义关联对象时可指定内存管理语义,用以模仿定义属性时所采用的“拥有关系”与“非拥有关系”。只有在其他做法不可行时才应选用关联对象,因为这种做法通常会引入难于查找的bug。

2024-02-11 03:23:32 1191

原创 【Effective Objective - C 2.0】——读书笔记(一)

最近寒假学习了【Effective Objective - C 2.0】这本书,特此总结提示:这里对文章进行总结:例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

2024-02-10 03:20:20 877

原创 【iOS】UICollectionView

UICollectionView是iOS6之后引入的一个新的UI控件,它和UITableView有着诸多的相似之处,其中许多代理方法都十分类似。简单来说,UICollectionView是比UITbleView更加强大的一个UI控件,有如下几个方面:1、支持水平与垂直布局2、通过layout配置的方式进行布局3、CollectionView中Item的大小与位置可以自由定义4、通过layout布局回调的代理方法,可以动态的定制每个item的大小和collection的大体布局属性。

2023-12-23 16:51:35 1509 2

原创 【iOS】Bug调试

在我们的编码过程中我们出现bug在所难免,有时找出这些bug十分耗费精力,调试可以帮我们找出程序中的bug,笔者特此撰写以下博客记录iOS中使用Xcode找出bug的高效方法。

2023-12-03 12:42:50 1076

原创 【iOS】实现评论区展开效果

在知乎日报的评论区中,用到了Masonry行高自适应来实现评论的展开,这里设计许多控件的约束问题,当时困扰了笔者许久,特此撰写博客记录。

2023-11-22 21:37:14 777

原创 【iOS】知乎日报

近期耗时一个月完成了第一个项目知乎日报,用到了JSONModelMasonryFMDB等一系列第三方库以及其他新学的知识点,整体采用了MVC框架进行编写,特此撰写博客总结知乎日报耗时一个月,在此期间碰到了许多问题,例如网络请求的异步加载问题,Masonry实现行高自适应的控件约束问题,单元格内按钮的复用问题,tableview的优化问题以及使用MVC框架中各个层的职责问题,总结便是学习iOS之路任重道远,还需更加努力。

2023-11-22 14:19:12 635

原创 【iOS】使用单例封装通过AFNetworking实现的网络请求

使用单例封装网络请求的就是创建一个单例,我们的网络请求专门由这个单例负责

2023-10-18 15:27:29 897

原创 【iOS】JSONModel的基本使用

JSONModel 是一个用于 Objective-C 的开源库,它用于简化 JSON 数据与 iOS 应用中的数据模型之间的转换。其最主要的优点就是简化JSON数据解析与减少模型代码的编写,JSONModel可以将json数据直接映射到我们的对象中,对于我们获取的数据更加方便。同时对于模型的嵌套数据的获取更加便捷。

2023-10-18 13:59:58 899

原创 【iOS】计算器仿写

在前两周组内进行了计算器的仿写,计算器仿写主要用到了MVC框架的思想以及数据结构中用栈进行四则运算的思想,还有就是对OC中的字符串进行各种判错操作处理。接下来笔者将简单介绍一下利用OC实现计算机的基本思路计算器的仿写其实不难,最难的部分是对表达式的处理,有许多细节需要注意。

2023-10-15 22:36:03 652

原创 【iOS】引用计数与autorelease

最近在学习iOS内存管理之引用计数,特此撰写博客记录学习过程自动引用计数(ARC)是指内存管理中对引用计数采取自动计数的方式在Objective-C中采用Automatic Reference Counting(ARC)机制,让编译器来进行内存管理。在新一代AppleLLVM编译器中设置ARC为有效状态,就无需再次键入retain或者release代码,这在降低程序崩溃、内存泄漏等风险的同时,很大程度上减少了开发程序的工作量。编译器完全清楚目标对象,并能立刻释放那些不再被使用的对象。

2023-09-21 16:51:36 487

原创 【iOS】单例模式

在最初进行OC的学习时笔者了解过单例模式的基本使用,现撰写博客加深对单例模式的理解单例模式是一种常见的设计模式,其主要目的是确保一个类只有一个实例,并提供全局访问点。这样就大大节省了我们的内存,防止一个实例被重复创建从而占用内存空间。这种模式在需要一个共享资源或对象的情况下非常有用,但也有一些优点和缺点。面向对象应用程序中的单例类(singleton class)总是返回自己的同一个实例。它提供了对象所提供的资源的全局访问点。与这类设计相关的设计模式称为单例模式。

2023-09-15 22:06:16 287

原创 【iOS】浅析static,const,extern关键字

笔者本周在学习单例模式时,用到了static关键字,特此总结博客记录学习static,const,extern关键字的过程static修饰局部变量:将局部变量的本来分配在栈区改为分配在静态存储区,改变了局部变量的生命周期与作用域。static修饰全局变量:本来是在整个源程序的所有文件都可见,static修饰后,改为只在申明自己的文件可见,即修改了作用域。extern 关键字用于声明在其他源文件中定义的全局变量和函数。它使得不同源文件可以共享全局标识符的声明,从而实现了跨文件的变量和函数的共享和使用。

2023-09-15 21:06:55 606

原创 【iOS】ViewController的生命周期

在iOS开发中UIViewController扮演者非常重要的角色,它是视图view和数据model的桥梁,通过UIViewController的管理有条不紊的将数据展示在视图上。作为UIKit中最基本的一个类,一般复杂的项目都离不开UIViewController作为基类。所以了解UIViewController的整个生命周期是有必要的。提示:这里对文章进行总结:例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

2023-09-14 20:36:05 514

原创 【iOS】push与present Controller的区别

iOS推出与退出界面有两种方式——push与present,接下来笔者分别介绍这两种方式。

2023-09-11 21:56:24 705

原创 【iOS】MVC

MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外,此模式通过对复杂度的简化,使程序结构更加直观用户点击 View–> 视图响应事件 -->通过代理传递事件到Controller–>发起网络请求更新Model—>Model处理完数据–>代理或通知给Controller–>改变视图样式–>完成。

2023-09-10 21:56:26 849

原创 【iOS】属性关键字

先前已经在iOS的学习过程中学习了一些属性关键词的简单用法,今天这篇博客来更加深入探讨iOS中的属性关键字以及温习深拷贝与浅拷贝自定义对象实现copy和mutableCopy都为深拷贝因为我们的自定义对象没有copyWithZone:和mutableCopyWithZone:两个方法,需要遵守SCopying和NSMutableCopying协议来实现这两个方法,也已经在上面的链接中具体实现推荐按照下面的格式来定义属性原子操作、读写权限、内存管理。

2023-09-02 16:00:28 1216

原创 【iOS】Masonry的基本使用

暑假安装了cocoapods,简单使用其调用了SVGKit,但是没有学习Masonry,特此总结博客记录Masonry的学习于此基础的Masonry的使用已经基本讲解完了,后续在写计算器的时候会更多的使用到Masonry,一些更深层次的用法会在后面的博客中讲解另外需要记住的一点是使用Masonry会影响我们的性能,frame往往是最简单高效的,在实际的设计中我们可以将这两种布局方式进行混合使用。

2023-08-31 08:32:04 1920

原创 【iOS】折叠cell

在暑假的3GShare中用到了折叠cell控件,特此总结博客记录如此一来我们便简单实现了我们的折叠cell以下给出完整的简单折叠cell的实现代码//折叠cell=======//=======折叠cell}//====折叠cellreturn 1;return 4;return 20;//尝试获取可以复用的单元格//如果得不到,返回为nil//单元格文字赋值btn.tag--;} else {

2023-08-30 07:55:42 772

原创 【iOS】App仿写--天气预报

最近完成了暑假的最后一个任务——天气预报,特此记录博客总结。根据iPhone中天气App的功能大致可以将仿写的App分为四个界面——首页,搜索界面,添加界面,浏览界面,同时在天气预报中调用了较多的API,具体使用方法可以看这篇博客——【iOS】json数据解析以及简单的网络数据请求,这里不再说明暑假的App仿写已经全部写完,后面回去学习一些第三方库例如Masonry与AFNetworking。

2023-08-03 12:24:27 1761 1

原创 【iOS】json数据解析以及简单的网络数据请求

近期写完了暑假最后一个任务——天气预报,在里面用到了简单的网络数据请求以及json数据的解析,特此记录博客总结笔者在这里简单了讲解了一下基本的网络数据请求,实际上随着iOS的发展出现了许多第三方库例如JSONModel等,可以让我们更加方便的解析json以及请求网络数据,另外还有网络数据请求的POST用法笔者还不甚了解,后面学到会一并总结和风每日天气。

2023-08-02 20:38:21 2420

原创 【iOS】Cocoapods的安装以及使用

最近笔者在仿写天气预报App时用到了api调用数据,一般的基本数据类型我们用Xcode中自带的框架就可以转换得到。但是在和风天气api中的图标的格式为svg格式。似乎iOS13之后Xcode中可以直接使用svg格式的图片,但笔者没有查到对应的资料。笔者就调用了第三方库来使用svg格式的图片,这花了读者一天的时间才安装完成集成第三方库的Cocoapods并对其进行使用,特此写博客记录,如有不足请不吝指出至此Cocoapods的安装以及使用大概也讲的七七八八了,本博客仅供交流学习,如有不足或错误请不吝指出。

2023-07-27 01:33:47 5961

原创 【iOS】懒加载

iOS懒加载(Lazy Loading)是一种延迟加载的技术,它允许在需要的时候才初始化对象或执行某些操作,而不是在对象创建的时候立即执行。懒加载主要用于优化应用程序的性能和内存使用,特别是对于那些耗时或资源密集的操作。在iOS开发中,懒加载通常应用于以下场景:图片加载:在加载图片时,可以使用懒加载来延迟加载图片,避免一次性加载过多图片导致内存压力过大。当需要显示图片时,才加载并显示图片。视图控制器的子视图:在视图控制器中,有些子视图可能只在特定条件下需要显示,而不是每次视图控制器加载时都需要。

2023-07-24 12:55:06 970

原创 【iOS】App仿写--管理系统

在日常生活中,如果用文字来记述与管理我们数据会十分麻烦,并且人工成本较高,这里笔者给出一种管理系统的模版,供大家借鉴,可凭借实际需求来创建所需要的管理系统在先前C语言的学习过程中,笔者已经仿写过了学生管理系统,不过C语言的学生管理系统是没有UI的,所有功能都在控制台中实现,现用OC来仿写我们的管理系统这里只是管理系统的一种模版,大家可以通过实际需求来更改代码来统计数据。

2023-07-23 16:35:14 861

原创 【iOS】自定义字体

在设计App的过程中我们常常会想办法去让我们的界面变得美观,使用好看的字体是我们美化界面的一个方法。接下来笔者将会讲解App中添加自定义字体。

2023-07-23 15:34:06 1897

原创 【iOS】多界面传值

在写网易云音乐以及3GShare包括后面的学生管理系统时,用到许多界面传值方法,特撰写博客记录目前学过的几种多界面传值方法多界面传值是iOS中十分重要的知识,笔者还有很多知识还没学到例如KVC等,以后学到了会加以补充。

2023-07-22 00:43:18 978

原创 【iOS】CALayer的理解与简单使用

在实现网易云音乐demo开发的过程中,通过查阅网上资料,发现了我们可以对我们的视图进行裁剪来实现美观的体现,例如这样:将原本矩形的视图裁剪成圆形,来更加贴合大众的审美,但是当查看视图层级时发现时视图似乎并未被裁减,但仍然显示出圆形的形状,经过查阅资料发现与视图创建时自带的图层CALayer有关事实上,CALayer还有很多属性,笔者还不甚理解,这里给出大佬的博客供大家参阅iOS开发之CALayeriOS CALayer介绍iOS CALayer的理解与简单使用。

2023-07-20 12:16:07 407

原创 【iOS】App仿写--3GShare

这周写了3GShare的demo,这是一个十分麻烦的demo,比网易云需要设计的知识更多,特此撰写一下博客记录总结总体来说难度不大,但是需要新学的东西很多,同时需要用老知识设计很多页面,比较繁琐,其中还有一些比较小的要点需要总结,会专门撰写博客指出。

2023-07-19 19:39:22 189

原创 【iOS】App仿写--网易云音乐

在暑假之前仿写了网易云app,一直没总结。网易云app主要让我熟悉了视图之间的相互嵌套的用法与关系以及自定义cell的用法,特此撰写以下博客进行总结。网易云音乐总体来说还是比较简单的,主要是为了后面的demo进行铺垫,刚开始写会觉得很困难, 后面熟练了之后其实写的很轻松。

2023-07-19 15:47:37 212

空空如也

空空如也

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

TA关注的人

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