自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 KMP算法

文章目录KMP是什么?什么时候会用到KMP算法?KMP算法的主要思路构建next数组strstr函数的实现参考博客KMP是什么?Knuth–Morris–Pratt(KMP)算法是一种改进的字符串匹配算法,它的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。它的时间复杂度是O(m+n)。具体实现就是通过一个next()函数实现,函数本身包含了模式串的局部匹配信息。什么时候会用到KMP算法?字符串匹配问题,例如:实现strstrKMP算法的主要思路在之前遇到字符串匹

2020-10-24 21:26:14 197

原创 iOS - present和push

目录比较使用视图转化的demo比较push与present都可以推出新的界面。present与dismiss对应,push和pop对应。present只能逐级返回,push所有视图由视图栈控制,可以返回上一级,也可以返回到根vc,其他vc。present一般用于不同业务界面的切换,push一般用于同一业务不同界面之间的切换使用在使用UINavigationController时,用[self.navigationController pushViewController:XXXVC

2020-09-28 20:06:01 303

原创 iOS - viewController生命周期

目录相关方法代码执行顺序具体代码对比loadView与viewDidLoad一些问题参考博客相关方法通常上述方法包括如下几种,这些方法都是UIViewController类的方法:1. -(void)viewDidLoad;一个APP在载入时会先通过调用loadView方法,将视图载入到内存中。然后会调用viewDidLoad方法来进行进一步的设置。通常,我们对于各种初始数据的载入,初始设定等很多内容,都会在这个方法中实现。但是要注意,这个方法只会在APP刚开始加载的时候调用一次,以后都不会再调用

2020-09-26 23:43:44 430

原创 iOS - MVC学习

目录MVC简介MVC的优缺点优点缺点MVC之间的通信Model和View如何向Controller发送消息?实例代码(登陆注册demo)参考博客MVC简介MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。Model(模型):表示应用程序核心(比如数据库记录列表),是应用程序中用于处理应

2020-09-20 09:51:56 203

原创 iOS Masonry学习

目录学习笔记应用实例 -- 照片墙学习笔记mas_makeConstraints是给view添加约束,约束有几种,分别是边距,宽,高,左上右下距离,基准线。添加过约束后可以有修正,修正有offset(位移)修正和multipliedBy(倍率)修正。mas_remakeConstraints() 移除之前的约束,重新添加新的约束mas_updateConstraints() 更新约束equalTo() 与 mas_equalTo()equalTo() 参数是对象类型,一般是视图对象或者m

2020-09-13 09:50:20 416

原创 iOS 深浅复制

目录1.概念2.非集合类对象的复制3.集合类对象的复制4.单层深复制5.完全深复制6.归档与解档7.@property copy和strong1.概念浅复制:也有人称做浅拷贝。就是只改变新对象的指针指向,并未生成新的内存地址,只是将新对象的指针指向要复制对象的内存地址。集合类与非集合类执行copy操作都是浅复制。深复制:同样也有人称做深拷贝。即改变新对象指针指向,还为对象生成新的内存地址。深复制又分为单层深复制与完全深复制,单层深复制虽然生成了新的内存地址,但是新的对象中的元素地址还是旧对象元素的地

2020-08-16 19:35:32 128

原创 iOS 懒加载

目录什么是懒加载?如何实现?懒加载的优缺点代码实现什么是懒加载?懒加载又称为延迟加载,它是指系统不会在启动时就加载某个对象,而是在第一次调用时才加载这个对象到内存中,其实就是所谓的重写对象的getter方法。简单来说,就是某个对象被使用的时候再加载。在使用懒加载的时候一定要注意先判断是否已经存在,如果不存在那么再去进行实例化。如何实现?重写属性的getter方法,并将该对象在初始化时需要实现的代码在get方法中实现。懒加载的优缺点使用懒加载的优点:不必将创建对象的代码全部写在viewDidL

2020-08-11 21:57:26 228

原创 iOS 网络请求

目录NSURLSession具体代码NSURLSession使用步骤创建NSURLSession的会话根据会话创建Task执行TaskTask的类型NSURLSessionTask:是一个抽象类,不能直接使用NSURLSessionDataTask:请求与数据相关,可以直接使用NSURLSessionDownloadTask:与下载相关,可以直接使用NSURLSessionUploadTask:与上传相关,可以直接使用具体代码需求是在用户进行输入的时候产生联想效果,所

2020-08-09 21:32:39 216

原创 iOS 属性传值和协议传值

目录属性传值思路具体代码协议传值思路具体代码属性传值属性传值是一种正向传值的方法,当第一个界面向第二个界面跳转时,第一个界面将一些数据传给第二个界面,这就是正向传值。思路创建两个ViewController,在第二个界面中定义一个属性来接收第一个界面传过来的信息创建第一个界面中的button点击事件,并在这里进行传值具体代码ViewController.h中@interface ViewController : UIViewController@property(nonatomi

2020-07-31 17:31:20 191

原创 iOS - 轮播图

目录思路代码思路先创建一个UIScrollView,用来存放需要滚动的照片设定可以控制滚动图片的UIPageControl设定时间间隔(NSTimer)因为轮播图需要跟着tableView一起向上滚动,所以UIScrollView是放在一个cell里面的代码ScrollerTableViewCell.h中@interface ScrollerTableViewCell : UITableViewCell <UIScrollViewDelegate>//添加协议//定义三

2020-07-26 22:58:10 239

原创 iOS-自定义cell

目录思路具体代码思路创建一个WriteTableViewCell文件继承于UITableViewCell在WriteTableViewCell.h文件中定义cell中需要的属性在WriteTableViewCell.m文件中写方法在WriteViewController.m中添加协议函数,可以访问自定义cell具体代码WriteTableViewCell.h文件中@interface WriteTableViewCell : UITableViewCell@property(no

2020-07-26 21:41:25 177

原创 UIButton与定时器

目录UIButton1. 基础知识2. UIButton事件定时器UIButton1. 基础知识通过类方法创建:类名+方法名ViewController.h 中@interface ViewController ()@end@implementation ViewController//创建普通按钮- (void) createUIRectButton { //创建一个btn对象,根据类型来创建btn //圆角类型btn:UIButtonTypeRoundedRe

2020-07-20 00:14:45 135

原创 Objective-C学习笔记

目录V. 面向对象V-I 类与对象Tips1.#import2.NSLog函数V. 面向对象V-I 类与对象类:是某一批对象的抽象,可以把类理解成某种概念;对象:是一个具体存在的实体。定义类a. 关键字:@interface 、 @end、@implementationb. 继承:NSObject对象的产生和使用创建对象语法格式:[[类名 alloc] 初始化方法];其中alloc是Objective的关键字,负责为该类分配内存空间、创建对象。因为所有对象都继承了NSObjec

2020-06-13 23:42:57 261

原创 考核题总结

考核题总结目录考核题总结第一题 数组第二题 二分法查找第三题 判断字符串叠加第四题 反转链表第五题 判断回文链表第一题 数组给定一个包含 0, 1, 2, …, n 中 n 个数的序列,找出 0 … n 中没有出现在序列中的那个数。示例:输入:3 接下来输入的元素个数3,0,1输出: 2思路: 先对所给数组进行排序,对排序后数组进行遍历,遍历时如果与条件不符,则直接输出并break。#include<stdio.h>int main(){ int i, n, j

2020-05-23 23:43:05 133

原创 C语言 二分查找

C语言 二分查找目录C语言 二分查找题目1.在升序数组中查找目标值2. 寻找比目标值大的最小元素3. 查找第一个满足条件的元素4. 寻找峰值二分查找的条件: 要查找的数组是有序的二分查找的优缺点:优点是比较次数少,查找速度快,平均性能好,占用系统内存较少;其缺点是要求待查表为有序表,且插入删除困难。基本思想:将数组分成大致相等的两部分,取a[mid](mid = n / 2)和target进行比较,如果二者相等,则算法终止;若target < a[mid],则在数组的前半部分进行查找;若

2020-05-16 16:34:31 1683 1

原创 C语言 单链表的增删改查

单链表的增删改查目录单链表的增删改查链表的创建和输出(有头结点)链表的查找链表的删除链表的修改链表是一种最常见地采用动态存储分配方式的数据结构,相较于数组而言它更加灵活。单链表的特点有一个head指针变量,他存放第一个结点的地址,称之为“头指针”。每个结点都包含一个数据域和一个指针域,数据域存放用户需要的实际数据,指针域存放下一个结点的地址。从头结点开始,每一个结点的指针域都指向下一个结点,所有结点都是单线联系。最后一个节点不再指向其他节点,成为“表尾”结点,它的指针域为空指针“NULL”

2020-05-08 21:46:59 614

原创 C语言变量作用域

变量作用域目录变量作用域1.作用域2.链接3.储存期1.作用域作用域描述程序中可访问标识符的区域。一个C变量的作用域可以是块作用域,函数作用域,函数原型作用域或文件作用域。代码块作用域代码块是指一对花括号之间的代码,函数的形参虽然是在花括号之前定义,也属于代码作用域。声明在内层块中的变量,其作用域仅局限在该声明所在的块:int fun(int a){ int i; for(i...

2020-05-02 23:09:31 421

原创 数组与指针

数组与指针文章目录数组与指针一、数组1.一维数组一、数组1.一维数组创建和初始化创建数组时,需要对数组的大小和类型进行定义 1| int a[3] = {1, 2, 3}; [ ]中为含有元素的个数,即为数组长度(必须大于0),C语言中不允许用变量定义元素数。使用数组之前,要对数组进行赋值,若不赋值,编译器使用的值是内存相应位置上的现有值;若初始化列表中的值小于数组元素个数时...

2020-04-25 12:51:52 1831 1

空空如也

空空如也

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

TA关注的人

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