自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 iOS--第二章block

这里的Block中的_main_block_impl_0结构体实例持有指向——block变量的__Block_byref_val_0结构体实例指针;这时,————block变量同Block一样变成__block_byref_val_0的结构体类型变量,也就是放在栈上的结构体实例,这个结构体初始化持有原自动变量的成员变量;Block转换为Block的结构体类型的自动变量, __block变量转换为block变量的结构体类型的自动变量,这些都是在栈上生成的该结构体的实例变量;

2024-03-17 20:37:58 1116

原创 Effective objective-C---第六章学习--块

补进度ing。

2024-03-05 20:37:38 2524

原创 Effective objective-c-- 内存管理

寒假比较忙没能能认真看,就拖到学校了来看了,进度落后很多了,只能尽量赶了;

2024-03-03 18:24:35 3291

原创 Effective oc 2.0 第四章学习

问题在于,分类中的方法是直接添加在类里面的,他们就好比这个类中的固有方法。如果类中本来就有此方法,而分类又实现了一次,那么分类中的方法会覆盖原来那一份实现代码。根据调试器回溯信息中的分类名称,很容易就能定位到类中方法所属的功能区,这对于应该视为私有的方法来说更是极为有用。该模式的主旨是:定义一套接口,某对象若想接受另一个对象的委托,则需遵从此接口,以便成为其“委托对象”(delegate)。重要之处在于,这是唯一能够声明实例变量的分类,而且此分类没有特定的实现文件,其中的方法都应该定义在实现文件里。

2024-02-25 14:32:40 953

原创 Effective oc 2.0 第三章学习--接口与API设计

具体加什么来代表私有方法因人而异,自己怎么舒服怎么来,唯一注意的是:一定不要只使用_作为前缀,用p_都比那个好,因为苹果公司使用的就是_作为私有方法的前缀的,你自己定义的私有方法名有可能就会和人家自带的冲突。“自动引用计数”在默认情况下不是“异常安全的”,就是说,如果抛出异常,那么本应该在作用域末尾释放的对象现在却不会释放了,这样就会造成内存泄漏问题,如果想生成“异常安全”的代码,可以通过设置编译器的标志来实现,不过这将引入一些额外的代码,在不抛出异常时,也照样要执行这部分代码。若执行操作时还需数,

2024-01-28 15:45:13 1033

原创 Effective oc 2.0 第二章学习--对象、消息、运行期

在用oc等面向对象的语言编程时,对象就是“基本构造单元”,开发者可以通过对象来存储和传递数据。在对象间传递数据并执行任务的过程就叫做“消息传递”。当应用程序运行起来以后,为其提供相关支持的代码叫做“objective-c运行环境”。

2024-01-21 15:03:37 845

原创 小蓝书第一章总结

小蓝书第一章总结熟悉Objective-c了解objective-c的起源在类的头文件中尽量少引入其他头文件多用字面量语法,少用与之等价的方法字面数值字面量数组字面量字典可变数组与字典局限性多用类型常量,少用#define预处理命令用枚举表示状态,选项,状态码熟悉Objective-c了解objective-c的起源oc语言是c语言的超集,在语法上和c++十分相似,都是面向对象的语言;oc使用的是动态绑定的消息结构而非c语言的函数调用;oc语言只有在运行时才会检查对象类型,编译时没用这个过程,这个

2024-01-14 19:18:05 906

原创 iOS--UIPickerView学习

一种很常见的用法是把各个数据以滚动的形式组成一个组合数据,比如年-月-日的日历或者时钟,以及省级-市级-区的地域;其他没啥好说的了,因为用起来真的太像UItableview了,这里简单解释一下滑动函数的逻辑,如果滑动“省”,则更新市和区的component并其row归零;这个控件是iOS中自带的控件,使用方法类似于UItableview,所以就从UItableveiw的使用来分析了,这里跟着别人做了一个省级-市级-区的地域的小demo。你可以在该方法中获取选择的行和列索引,并根据需要进行相应的处理。

2023-11-29 21:06:11 2045 2

原创 iOS--UIimagePickerController

UIImagePickerController 是 iOS 开发中的一个内置视图控制器,用于方便地实现图像和视频的选择和拍摄功能。它提供了一个用户界面,允许用户从设备的相册库中选择照片或视频,或者使用设备的摄像头进行拍摄。写完知乎日报之后,不知道该学些什么东西,但总的和以后写的项目有关,所以看学长的博客先学习一项相机和相册的调用。从相册中选择照片:用户可以浏览设备相册中的照片,并选择其中的一张照片作为所选项。从相册中选择视频:用户可以浏览设备相册中的视频,并选择其中的一个视频作为所选项。

2023-11-26 20:54:07 1140

原创 iOS知乎日报仿写--第五周

因为上周的金工实习,所以知乎日报的仿写往后面拖了一周,但深的东西也比较少了;所以这次的内容不会很多;还有很大的改进空间,接下来一周会一点点的优化这个项目的,这里就基本完成了。这应该时目前来说写过的一个最大的项目了,涉及到的知识也很全面,不仅仅是最前面知识的熟练应用,也是一次很好的锻炼;

2023-11-19 20:43:07 73

原创 知乎日报仿写--第四周

这两周完成的东西比较少,有金工实习的原因也有自身的一些原因,但尽量下周完成知乎日报的仿写;这两周完成了评论区数据的请求,cell高度的计算,cell高度自适应,以及对以前bug的修复;

2023-11-13 16:14:40 70

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

本周是知乎日报的第二周,这几天写的东西挺少的;目前大概实现了新闻的点击进入,以及轮播图的点击进入 ,还有新闻进入时的异步加载 (但更新时未能实现);

2023-10-29 19:00:57 82

原创 iOS--知乎日报第一周总结

本周开始了知乎日报的仿写(其实算到今天已经是11天了,但刚开始的时候因为太久没写这种比较大的项目了就一直拖着,写的很慢);这里用到了许多暑假学习和使用的一些知识,所以复习了以前学的一些东西本周比较简单的完成了主界面的布局,主要的知识点包括定时轮播图,下拉刷新,和更新数据以及manager单例封装URL和AFNetworking的网络请求;主线程的回调;以及SDWebimage下载图片比较简单的实现了我上面说的那些功能,单也有些不太好的地方,比如一次只能请求一组cell;

2023-10-23 15:14:47 69

原创 iOS--jsonModel的使用和Manager封装网络请求

在.m文件中要注意重写一个方法,+ (BOOL)propertyIsOptional:(NSString *)propertyName,如果不重写这个方法,可能会导致程序奔溃,但不绝对;

2023-10-17 19:59:15 94

原创 iOS--仿写计算器

这里我设置了两个数组,一个用来存储按钮输入的字符串,一个用来存储按钮本身的值,(我看学长有的用tag值来实现传值,但我感觉那样不太符合MVc模式的理念,我认为可以应该将view中的对象能够在controller全部访问,model则用于数据存储);且在MVC模式下,应该保证在controller里面任然可以访问到view中的视图对象,所以这里的多个按钮我们选择循环创建,但要存入一个数组中去(不然设多个属性代码量太大);这两步可以看看我之前的博客,这里就补充一下负数的计算;注意好MvC的各自的功能,

2023-10-08 20:16:04 58

原创 iOS--键值编码KVC

如果我们对一个基础类型赋值nil,正常情况下,这是不被允许的,同理,kvc也是如此,更为具体的说,当我们用kvc为一个基础类型赋值nil是,对象会调用setNilValueForKey方法,这个方法默认情况下会引发NNSInvalidArgumentExeception异常,遭成程序奔溃跟上面一样,我们也可以对它重写;在需要频繁访问属性的场景下,直接方法调用可能更高效。kvc除了可以操作对象的属性,还可以操作对象的复合属性,所谓的复合属性,kvc也将其称为key路径,简单的来说,就是操作属性的属性;

2023-09-24 21:18:53 52

原创 计算器的仿写--四则运算

下周要仿写计算器了,不过在那之前我们要先了解以下如何用计算机来进行简单的四则运算;不过个人能力有限,负号的运算没能实现,这里就讲一下我想到的;首先我们用字符串来实现四则运算,我们需要先将中缀表达式转为更适合电脑理解的后缀表达式;

2023-09-24 17:58:15 86

原创 iOS--栈和队列

栈(Stack)是一种数据结构,它按照后进先出(LIFO,Last In First Out)的原则进行操作。栈可以看作是一种特殊的线性表,只能在表的一端进行插入和删除操作,这一端称为栈顶,另一端称为栈底。栈的定义包括以下要素:数据元素:栈中存储的数据元素可以是任意类型的对象,可以是基本数据类型、结构体、类等。栈顶指针:栈顶指针指向栈顶元素的位置。当栈为空时,栈顶指针通常指向一个特定的空值。压栈(Push)操作:将一个新的元素添加到栈顶,栈顶指针向上移动。

2023-09-24 15:39:08 161

原创 iOS--引用计数管理

对引用计数的原理与上面的2问题类似,但具体表现为一系列的对象与对象操作改变引用计数,就像上图所示,包括生成对象,持有对象,释放对象,废弃对象,这一系列对象操作又可以与oc中的方法对应,这里引用计数饿的对象由NSobject类对象承担,ARC的原理是通过在编译时自动插入内存管理代码来管理对象的引用计数。在oc语言最开始学习的时候,我们就被告知我们所写的代码程序是在ARC机制下运行,那么什么是自动引用计数(ARC)?自己持有的对象,一旦不在需要,持有者有义务释放该对象,释放使用release方法。

2023-09-22 22:03:49 52

原创 iOS--单例模式

所以,即便单例模式会破坏单一职责原则,引入全局状态,导致代码复杂性的增加和并发和线程安全的问题,我们也离不开这种模式;(这里不是绝对的,所以我们将单例模式还可细分为懒汉模式和饿汉模式,一个省空间,一个省时间,下面会讲)道理类似于懒加载,就是在要使用该单例时在创建该单例对象,可以控制单例对象产生的时间,但也意味着要执行类方法来创建对象,会多耗费些许时间。2.由于单例类的实例是全局共享的,对单例类的修改可能会影响到系统的其他部分,使得扩展和维护变得困难。在该类创建就创建一个对象存储在静态区,允许全局调用;

2023-09-17 18:47:21 83

原创 iOS-- present和push

这种管理模式下,被呈现的视图控制器与呈现它的视图控制器之间形成了一种父子关系。这样的交互优势是简单,可以适应所有的跳转交互需求(本地交互与远程交互),缺点是用户交互方式单一,当遇到像QQ一样的单一聊天页面需求时,很难实现。当用户完成与被呈现的视图控制器的交互后,通常会使用dismiss(animated:completion:)方法将其关闭并返回到呈现它的视图控制器。总之,通过present方法呈现的视图控制器采用模态呈现的管理模式,它与呈现它的视图控制器形成了父子关系,并由呈现它的视图控制器负责管理。

2023-09-15 18:53:58 109

原创 iOS-- view controller的生命周期

2023-09-14 20:43:12.906319+0800 viewcontroller的生命周期[2647:71166] -[ViewController viewWillDisappear:]01。2023-09-14 20:43:12.906553+0800 viewcontroller的生命周期[2647:71166] -[ViewController_01 viewWillAppear:]02。可以在此方法中手动创建或加载View,并将其设置为View Controller的view属性。

2023-09-14 20:54:14 405

原创 iOS学习-- MVC学习

举个例子,在登陆注册的实现中我们可以只在两个view controller类对中完成所有操作,而MVC则要求我们将每个view controller对象中分为三部分M(model),V(view),C(controller)三部分;这意味着可以使用相同的模型来支持多个不同的视图,或者可以使用不同的视图来显示相同的模型数据。Controller:如其名,管理用户交互和数据处理之类的活动,通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。C:管理用户交互,以及Model和View的初始化;

2023-09-07 19:54:54 91

原创 iOS学习--第三方库的下载和使用和Masonry学习

可以直接在podfile里直接改,也可以在终端里输入open Podfile来打开;记住经可能改为这种形式,不然可能会出现下载了,用不了的情况(问就是我就是这样的);这个名为Masonry的第三方库,功能有点类似于自适应式图,可以对视图对象进行约束,并自定义上下左右的宽距;之后我们只要用那个space文件就行了,这里我下载了一个名为Masonry的第三方库。我这里是改变父视图位置来改变被约束的子视图位置,也可以改变宽距但没写了;1.下载好库之后,引用Masonry的头文件。

2023-09-03 20:05:46 107

原创 iOS学习--属性关键字

atomic ,nonatomic:在日常使用中常常会用到nonatomic这个关键字,这个关键字对属性的赋值是不加锁的,可以多线程并发访问,从而节省时间和性能;和assign相同,但它适用于“对象类型”,该特质表达一种“非持有关系”,不会使修饰对象的引用计数加一,当目标对象销毁时,属性值不会自动清空(unsafe)。不完全深拷贝即对于数组,集合,字典的容器类对象,只拷贝容器类对象本身为新的对象,但容器类元素只是进行指针拷贝;修饰基本数据类型,不能用于对象,赋值的时候就是简单的赋值。

2023-09-01 20:34:30 131 1

原创 折叠单元格的使用

折叠单元格是在原来单元格上的扩展,实际上可有UItableview和UIlabel以及一个储存数据的可变数组组成,以及控制折叠的按钮;通过按钮可以控制Uitableview的布局以及单元格的数量来实现折叠;以及单元格更新的时间,要同时更新cell和label;注意单元格显示的地方是一个label;以及存储数据的数组内元素的交换;

2023-08-30 20:40:23 63

原创 iOS天气预报oc仿写

这次仿写的天气预报是本次暑假学习中的最后一个项目,相比于前面几个项目,天气预报涉及到的网络请求以及字典数组的多级存储都是之前很少接触的知识,所以一开始比较折磨,但在学习了基本的api网络请求,以及通知传值(逆向传值)之后写的速度还是挺快的;总之通过这段时间的学习,在oc语言的使用上,感觉自己进步还是挺快的,以下是这段时间学到知识的部分总结。

2023-08-03 16:22:51 113

原创 ios暑假第二周--share的仿写

首先在3gshare的开始界面,要求我们完成一个较为简单的登陆注册的界面,对与账号与密码的存储,我选择了NSDictionary对象,不仅仅是key和value之间一对一的关系,还有NSdictionary比较简单的遍历方法;但我们还要实现NSdictionary对象在登陆与注册两个界面之间的传递,这就要求我们去了解ios的五大传值,分别是协议传值,属性传值,block传值,通知中心传值,单例传值;主要使用的是协议传值(逆向传值),属性传值(正向传值);但实际上,如果对象过多,这种方法可不行;

2023-07-30 19:53:26 70 1

原创 【iOS第一周总结】- 网易云UI仿写

通过这次仿写,对自定义cell的使用页更加数量,自定义cell的方法挺简单的,即在cell的子类中创建新的控件自定义加在cell上来完成自定义,但需要注意的是,一旦完成自定义,cell父类的部分属性会改变,如imageview,textlabel,以及系统cell类型;label . text = @"夜间模式";} @end。

2023-07-23 20:55:05 76

原创 照片墙案例和数据视图

照片墙就是手机相册中的图片展示形式,且可以点击互动但本质上还是对前面学习的控件的使用这里注意一下新出现的手势控件//创建一个点击手势//触发事件的点击次数//触发事件的点击手指数量该控件运用于手势交互理解之前控件学习的使用,难点在于照片墙布局的算法且一定要把滑动视图的用户交互开启。

2023-06-11 15:43:17 54

原创 分栏控制器

分栏控制器有点像导航控制器,但分栏控制器管理视图控制器时和导航控制器不同的地方在于,导航控制器中的视图控制器具有层级关系,而分栏控制器则是平行关系分栏控制器对于视图控制器的添加应该以数组形式添加其他地方类似于导航控制器,比如导航栏和导航栏按钮只是分栏控制器的每个视图控制器对应一个按钮一些新的属性和对象可以看看我代码上的注释,应该挺好理解的。

2023-06-08 20:14:47 27

原创 iOS 导航控制器

创建一个导航控制器导航控制器就像一个视图控制器的控制器,可以以栈的形式进行管理,通过push和pop进行视图控制器的切换常常设计的属性:navigationItem 该属性可以添加当前视图控制器的导航控制器按钮,注意只对于当前视图注意一下我上面的注释就差不多了。

2023-06-07 20:55:09 99

原创 iOS 手动布局子视图和自动布局子视图

手动重新布局子视图的关键在于UIView的。

2023-06-07 19:53:29 102

原创 UI学习2.0

_segcontrol insertSegmentWithTitle:@“0元” atIndex:0 animated:NO];//p3:是否显示动画。[_segcontrol insertSegmentWithTitle:@“10元” atIndex:2 animated:NO];

2023-06-04 17:36:05 49

原创 UI学习1.0

UILabel和它的名字一样,相当于一个标签,在这里这个标签的使用用就是通过UIlabel类的对象来进行使用,控件的属性设置就是对该对象的属性进行设置UILabel的属性如下:text:显示文字的赋值frame:控件的位置backgroundColor:控件的背景颜色font:标签文字的字体textColor:字体颜色numberofLines:文本的最大行数(且该行数也受框架大小和字体大小限制)addSubview:方法可以将控件加入视图中显示。

2023-05-28 16:43:45 75 1

原创 分享会的学习

类变量的模拟实际上是通过在实现部分设置全局变量,再设置对应的类方法始终放回该全局变量对象,从而实现类变量的使用,当需要对类变量进行修改和使用时往往也要通过类方法调用;如下单例模式是类变量的一种特殊使用,实际上就是通过类方法始终返回一个对象,和类变量不同的地方在于要进行判断是否已经创建过对象。

2023-05-21 11:57:20 43 1

原创 Foundation框架学习

字符串的类型主要有两种,NSString代表不可变的字符串,NSMutablestring代表可变的字符串;两种类的方法往往具有一定的相似之处。

2023-05-14 17:35:58 391

原创 面向对象下

c语言中包括的基础数据类型不是对象不具备对象的性质,没有属性方法可以调用,包装类可以将基础数据类型包装成类的对象,进而实行调用常见的如NSValue和NSNumber包装类,但要注意NSInteger,NSUInterger,CGFLoat只是基础类型。

2023-05-07 17:37:35 29

原创 考核题解读

由括号先进的后对应的特性可知该题表面上是栈的应用,实际上是用数组模拟栈,且只需记录栈顶移动的最大值;

2023-04-30 17:48:09 28

原创 面向对象的学习

类与对象是面向对象的核心。定义类分为两个步骤:1.接口部分,2.实现部分接口部分对成员变量和方法进行声明,声明如下声明中其他元素与c差不多,格式有所不同,其他要注意的点:1.成员变量名前缀为_2.方法声明中’-'代表实例方法,允许对象调用,‘+’代表类方法,允许类名调用3.方法声明中所有的类型都应该用圆括号括起来。4.且注意foo foo: foo:andage 不是同一种方法,可以同时定义。

2023-04-30 17:15:02 45

空空如也

空空如也

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

TA关注的人

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