自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Mac】git使用再学习

由于笔者最近在准备合作完成第二个项目,在写项目的过程中,要用到git来更好地合作,而笔者之前学习有关git的知识比较浅显而且长时间不使用,已经忘得差不多了,现在重新学习一下git,这次学习git主要有三个方面:学会如何使用github建立自己的代码库学会一些常见的git命令,用来远程合作。学习git的工作流(声明:本篇文章所有的工作都通过github和macOS操作系统进行,所有内容都以github为例)GitFlow。

2025-03-02 20:48:41 827

原创 OC高级编程之GCD

GCD是异步执行任务的技术之一。它可以将程序中记述的线程管理用的代码在系统级中实现。GCD的线程管理是作为系统的一部分来实现的,因此可统一管理,也可执行任务,比以前的线程更有效率。//长时间处理//例如AR用画像识别//例如数据库访问//长时间处理结束,主线程使用该处理结果。//只在主线程可以执行的处理//例如用户界面更新})});可以发现,GCD使用了Blocks,进一步简化了应用程序代码。

2025-02-24 17:54:58 935

原创 OC高级编程之Blocks

带有自动变量的匿名函数匿名函数就是指不带名称的函数。Blocks提供了类似C++和OC类生成实例或对象来保持变量值的方法。如果带有“自动变量值”,Blocks会保持自动变量的值Blocks的概念,在其他语言中其实也存在,只是名称不同。

2025-02-24 17:47:20 1020

原创 《Effective Objective-C》阅读笔记(下)

使用无缝桥接技术,可以在Foudation框架中的OC对象与CoreFoudation框架中的C语言数据结构之间来回转换。使用无缝桥接,可以将collection转换为具备特殊内存管理语义的collection。比如字典的键为“拷贝”,而值为“保留”,这时就只能使用无缝桥接来改变语义。

2025-02-24 17:28:52 2278

原创 《Effective Objective-C》阅读笔记(中)

比如:我们用某个类来表示个人信息,该类中还存放了一些引用指向此人的朋友,开发者可以添加或删除朋友,那这个属性就要用可变的set来实现。这种情况下,通常应该提供一个readonly属性供外界使用,返回一个不可变的set,这个set是内部可变set的一份拷贝。

2025-02-24 17:16:31 1137

原创 《Effective Objective-C》阅读笔记(上)

关联对象相当于把对象变成字典,不同的键对应不同的值。设置关联对象值时,通常使用静态全局变量做键。存储关联对象时,可以指明存储策略,来维护内存管理语义。

2025-02-24 17:06:58 1128

原创 【iOS】OC高级编程 iOS多线程与内存管理阅读笔记——自动引用计数(四)

变量作用域结束时,虽然随着持有强引用的变量obj失效,对象随之释放,但由于__bridge_retained转换使变量p看上去处于持有该对象的状态,因此该对象不会被废弃。这是因为由malloc函数分配的内存区域没有被初始化为0,因此nil会被赋值给附有__strong修饰符的并被赋值了随机地址的变量中,从而释放一个不存在的对象。bridge_transfer转换提供与此相反的动作,被转换的变量所持有的对象在该变量被赋值给转换目标变量后随之释放。retained转换可使要转换赋值的变量也持有所赋值的对象。

2024-12-15 21:00:19 866

原创 【iOS】OC高级编程 iOS多线程与内存管理阅读笔记——自动引用计数(三)

因此,使用附有__autoreleasing修饰符的变量作为对象取得参数,与除alloc/new/copy/mutableCopy外其他方法的返回值取得对象完全一样,都会注册到autoreleasepool,并取得非自己生成并持有的对象。像该源代码的声明一样,对象不注册到autoreleasepool也能传递,但是为了在使用参数取得对象时,贯彻内存管理的思考方式,我们要将参数声明为附有__autoreleasing修饰符的对象指针类型。weak修饰符的变量obj,变量obj持有对持有对象的弱引用。

2024-12-08 19:31:00 1067

原创 【iOS】OC高级编程 iOS多线程与内存管理阅读笔记——自动引用计数(二)

包含NSObject类的Foundation框架的源代码没有公开,不过Foundation框架使用的Core Foundation框架的源代码以及通过调用NSObject类进行内存管理部分的源代码是公开的。为此,我们使用开源软件GNUstep来说明,对内存分配的区域本身进行多重化管理,根据使用对象的目的、对象的大小分配内存,从而提高内存管理的效率。尽管如此,在大量产生autorelease的对象时,只要不废弃NSAutoreleasePool对象,那么生成的对象就不能被释放,因此有时会产生内存不足的现象。

2024-12-01 19:33:33 889

原创 知乎日报仿写总结

知乎日报前三周总结。

2024-11-24 19:02:46 634 2

原创 知乎日报前三周总结

在这几周进行了知乎日报的仿写,这篇博客来总结一下前三周仿写的内容。

2024-11-10 14:19:19 1169

原创 【iOS】SDWebImage的使用

在写知乎日报时,通过接口申请到的网络数据中,有一部分用来表示图片的数据,使用URL表示的,要再次通过URL获取到图片,才能直接使用图片(UIImage),通过SDWebImage第三方库可以很好地解决这个问题,接下来就介绍一下SDWebImage的使用方法。

2024-10-27 16:40:25 714

原创 【iOS】使用AFNetworking更方便实现网络请求

在研究spotify时,发现AFNetworking在处理一些需要涉及到请求头和请求体的网络请求会非常方便,与headers和parameters参数有关,这些知识之后会再进行完善。

2024-10-20 17:13:14 1104

原创 【iOS】YYModel

关于YYModel,其实还有一些Model和字典之间的转换,以及匹配不到字典对应键时的处理,这些东西之后会再完善。

2024-10-20 17:13:00 1361

原创 【iOS】OC高级编程 iOS多线程与内存管理阅读笔记——自动引用计数

自动引用计数(ARC,Automatic Reference Counting)是指内存管理中对引用采取自动计数的技术。用苹果官方说明的话说:在OC中采用ARC机制,让编译器来进行内存管理,在新一代Apple LLVM编译器中设置ARC为有效状态,就无需再键入retain或者release代码。也就是说,只要满足以下条件,就无需手动输入retain和release代码了:使用Xcode4.2或以上版本使用LLVM编译器3.0或以上版本编译器选项中设置ARC为有效。

2024-09-22 17:58:39 1345

原创 【iOS】KVC

定义:KVC(Key-value coding)键值编码,是指iOS开发中,允许开发者通过key名直接访问对象的属性,或者给对象的属性赋值,而不需要调用明确的存取方法。使用KVC键值编码的好处就是可以在运行时动态地访问和修改对象的属性,而不是在编译时确定。注意:在实现了访问器方法的类中,使用点语法和KVC访问对象差别不大,二者可以混用。但是在没有访问器方法的类中,无法使用点语法,这时KVC就有优势了。//直接通过Key来取值//通过Key来取值//通过KeyPath来取值。

2024-09-22 17:50:38 1625

原创 【iOS】单例模式

单例模式,简单地说就是一个类只对应一个对象,每次使用这个类时,都只能获取到那一个对象。它的详细定义如下:如果一个类始终只能创建一个实例,则这个类被称为单例类。有一个全局的接口来访问这个实例。当第一次载入的时候,它通常使用延时加载的方法创建单一实例。

2024-09-15 18:57:30 1675 2

原创 【iOS】present和push

present和push都用于iOS的视图切换,并且切换都是可逆的,原始视图不会被销毁,还可以直接更改window的rootViewController来切换视图,但是这种方法不可逆,并且原始视图会被销毁present一般用于不同业务界面的切换,push一般用于同一业务不同界面的切换present和dismiss对应,push和pop对应present只能逐级返回,push有栈控制,但是可以返回任意级?

2024-09-15 18:43:54 1550

原创 【iOS】ViewController的生命周期

InitloadView()当需要展示view而view为nil时,ViewController会调用loadView方法。viewDidLoad()类成员对象和变量的初始化都在这个方法里,在创建类后无论视图展现还是消失,这个方法只会在布局时调用一次viewWillAppear():视图将要展现的时候调用viewDidAppear():视图已经出现时调用viewWillLayoutSubviews()用于处理视图布局的变化,通常在这里执行与布局相关的操作,在子视图重新布局之前调用。

2024-09-15 18:40:21 1291

原创 【iOS】MVC设计模式

总的来说,MVC模式就是将一个程序分为了三个部分,model负责处理数据,view负责处理视图,controller负责处理逻辑。但是model、view和controller之间并不是一一对应的关系。⚠️Model 和 View 是相互独立的。

2024-09-08 19:12:29 793

原创 【iOS】通过第三方库Masonry实现自动布局

在暑期完成项目时,经常要花很多时间在调试各种控件的位置上,因为每一个控件的位置都需要手动去计算,在遇到循环布局的控件时,还需要设计算法来实现更简便地布局各个控件。这是由于手动布局的语言更偏向于直接给出控件的坐标位置,就需要准确计算控件的坐标值,但是在生活中,我们其实更倾向于使用相对位置来描述一个物品的位置。其实在OC语言中,也给出了类似的语法来帮助我们更简便地实现控件布局,这就是OC语言中的自动布局。

2024-09-01 16:14:50 854

原创 暑期学习总结

网易云音乐最主要用到的就是不同控件的堆叠,尤其是数据视图的堆叠,在数据视图上添加带有滚动视图的自定义cell,添加带有数据视图的自定义cell,通过多种视图控件的堆叠来实现复杂的界面效果。在笔者看来,网易云音乐的界面也是暑期项目中最复杂的一个。此外,在实现网易云音乐时,由于要实现全界面的夜间模式,笔者学习到了一些关于视图控制器生命周期的知识,在视图被呈现在屏幕上时,会有一些函数被依次调用,那么通过这些函数,就可以实现当前视图控制器视图的更新,配合全局变量就可以实现全界面的夜间模式。

2024-09-01 16:14:30 776

原创 【iOS】折叠cell

暑假的3Gshare中使用了折叠cell,这篇博客来总结一下折叠cell的使用。

2024-09-01 16:14:06 970

原创 【iOS】属性关键字

自定义类无论是copy还是mutablecopy都为深拷贝,因为自定义类没有copyWithZone:和mutableCopyWithZone:两个方法,需要遵守NSCopying和NSMutableCopying协议自己实现这两个拷贝方法。

2024-09-01 16:13:39 1764

原创 天气预报仿写总结

这周学习了iOS中简单的网络请求,并完成了天气预报的仿写,这篇博客来做一下总结。天气预报主要要实现四个界面,接下来分四个界面分别讲解一下。

2024-08-03 14:47:25 843

原创 OC语言多界面传值五大方式

在这五大传值中,笔者暂时用的比较多的是属性传值、协议传值和通知传值,多界面传值的应用非常常见,一定要掌握好。

2024-08-03 10:03:55 1208

原创 学生信息管理系统总结——(oc语言版)

这个项目虽然很简单,但是还是让我学到了一些很有用的知识的,有关NSPredicate和正则表达式的知识,之后会再继续深入学习。

2024-07-27 16:40:40 597

原创 3Gshare仿写总结

到这里就基本把3Gshare的所有界面都讲解完了,通过这个项目还是学到了很多新东西的,写网易云音乐时最大的收获是多个控件相互嵌套和夜间模式需要的多界面传值。3Gshare这个项目最大的收获就是聊天室所需要的实时更新数据视图,保留弹出的子视图和按钮状态的保持与更新。希望接下来可以继续进步,学习更加深入。

2024-07-27 15:54:12 1241

原创 网易云音乐仿写总结

网易云音乐的仿写不算太难,用到了很多之前学过的知识,让我对这些知识的认识深刻了许多,也学到了许多新的知识,希望接下来可以继续进步。

2024-07-20 18:36:55 496

原创 ZARA仿写总结

这就是zara仿写的主要内容,总的来说还是比较简单的,许多时间其实是花在调整控件的外观上面,要实现的功能不多,不过刚开始写可能会有点迷茫。

2024-07-20 17:11:32 492

原创 UI学习——cell的复用和自定义cell

在iOS开发中,"自定义单元格"(Custom Cell)是指开发者根据具体的设计需求,创建特定样式和功能的单元格,这些单元格用于UITableView或UICollectionView中,以展示数据。个性化设计要求: 当系统提供的单元格样式无法满足应用的设计需求时,就需要通过自定义单元格来实现特定的界面和布局。复杂的数据展示: 如果需要在单元格中显示复杂的数据结构(如图文混排、动态控件集合等),使用自定义单元格可以更灵活地控制数据的展示方式。优化性能。

2024-06-16 17:50:30 1176

原创 登陆界面案例和照片墙案例

照片墙案例需要用到UIView的userInteractionEnabled属性。这个属性设置为YES后,用户才可以与UIView进行交互。需要创建一个ImageViewController。这里实现一个登陆界面的案例,只实现最基础的界面。用户名和密码登录需要UILabel和文本输入框。登陆和注册通过两个按钮和警告对话框实现。

2024-06-16 17:07:02 401

原创 OC语言学习笔记——UI(二)

当父视图大小发生变化时,我们想让子视图跟着父视图一起变化,可以使用自动布局和手动布局两种方式。

2024-06-10 14:18:22 944 1

原创 OC语言学习——UI(一)

UIViewController是一个视图控制器,创建完视图控制器对象后,要对它进行赋值操作。视图控制器提供了许多控制器的基本功能,因为它是所有控制器的基类视图控制器负责创建和管理一组视图,它本身就提供了一个视图,称为该控制器的根视图(view),协调管理数据和视图之间的交互。3.将新建的视图加入到父视图中实现了两项功能:(1)将新建的视图显示到屏幕上(2)将新建的视图作为父视图的子视图来管理。3.视图的移动是通过定时器的方法里的事件函数实现的,也就是说,视图的移动要写在定时器调用的方法的事件函数里。

2024-06-02 18:27:30 1561

原创 mac上关于git的使用

Git 是一种分布式版本控制系统,即,代码的本地克隆就是一个完整的版本控制存储库。通过这些功能齐全的本地存储库,无论脱机还是远程都能轻松工作。开发人员会在本地提交其工作,然后再将存储库的副本与服务器上的副本进行同步。这种范例不同于集中式版本控制,后者要求客户端必须先与服务器同步代码,然后才能创建新版代码。接下来介绍mac上如何使用git。

2024-05-26 16:58:22 1199

原创 OC语言UI学习笔记——滑动条和进度条

滑动条和进度条是视图·控制器的两种属性 要在接口部分声明并完成实现过程。在事件函数中添加一段,使进度条进度与滑动条比例同步即可。用代码演示一下UIProgressView的功能。这里设置了进度条的颜色、位置、大小等特点,进度条一般用表示下载进度或视频播放进度。滑动条一般用来表示音量等大小可变的量。为滑动条添加事件的操作与进度条类似。可以使用算法通过滑动条修改进度条。

2024-05-26 15:56:12 479

原创 OC语言UI学习笔记——UILable和UIButton

它里面有origin和size两个成员变量,而origin和size又是两个结构体,其中origin的类型是CGPoint结构体,它里面包含一个x和一个y作为坐标;调用UIColor的颜色方法时,如红色:[UIColor redColor],传入clearColor可以使背景颜色透明。UIButton是UIKit框架中的一个类,是继承于UIView,用于创建可点击的按钮控件。UIButton只能通过类方法来创建,不能通过alloc来申请内存,因为它是自己管理内存的。可以创建自定义按钮来将图片贴到按键上。

2024-05-26 15:25:54 452

原创 oc学习笔记——深浅拷贝

有关于自定义类,对于这个类本身,无论copy还是mutablecopy都是深拷贝,但是对于类中指针类型的属性,如果使用=或者copy,那么该属性是浅拷贝,如果调用mutablecopy方法,那么该属性是深拷贝。注意⚠️:想要对自定义类调用copy或者mutablecopy时,要遵守NScopying或者NSMutableCopying协议,重写copywithzone或者mutablecopywithzone方法。

2024-05-19 17:49:58 794 1

原创 复制方法原来这么有趣!——oc对象复制

接下来用代码示范一下复制对象:这段代码在复制对象的部分就定义了一个HUspy类,并且遵守并实现了NSMutbaleCopy协议,重写了mutableCopyWithZone方法,在主函数中,便可以调用方法将huanghun变量复制给aniya变量,修改aniya的值对huanghun没有影响最后一个部分,还演示了浅复制的效果,深浅复制的内容在下一目讲解。

2024-05-12 17:47:24 568 1

原创 !是oc中的字符串——NSString和NSMutableString

oc语言中有两个字符串:NSString和NSMutableString。NSString代表字符序列不可变的字符串,而NSMutableString代表字符序列可变的字符串。

2024-05-07 22:10:57 565

空空如也

空空如也

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

TA关注的人

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