自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

m_miao

回首来时路,郁郁满芳华

  • 博客(44)
  • 收藏
  • 关注

原创 iOS开发 — JWT加密

JSON Web Token(JWT)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。一个JWT实际上就是一个字符串,它由三部分组成,头部、载荷与签名。头部(Header)头部用于描述关于该JWT的最基本的信息,例如其类型以及签名所用的算法等。载荷(playload)载荷就是存放有效信息的地方。签证(signature)jwt的第三部分是一个签证信息,这个签证信息由三部分组成:1,需要base64加密后的header;2,base64加密后的

2021-07-15 18:06:32 978 1

原创 Mac 创建并运行PHP文件

1,Mac自带了Apache服务器,所以Mac系统对于PHP运行非常友好;2,启动Apache服务: 2.1 打开终端,在命令行执行以下命令,启动Apache服务【sudo apachectl start】 (因为sudo是系统管理指令,座椅需要输入电脑开机密码 输入字符时不会显示,输入完成敲击回车即可) 2.2 检查Apache服务是否启动成功,输入以下地址【http://localhost 或者 http://127.0.0.1】 ...

2021-05-06 10:40:29 1741

原创 R.Swift使用方法

前置说明:已经安装完成----->【pod 'R.swift' pod install】配置说明:1,在当前的项目的target中选择Build phrase,点击+ 选择添加 New Run Script Phase.2,将Run Script移动至Compile sources之上,Check Pods Manifest.lock之下。在Run Script中添加:参见下图2.1,$PODS_ROOT/R.swift/rswift generate $SRCROOT...

2021-03-05 14:16:38 1002

原创 删除Main storyboard,并解决启动黑屏问题

前置说明:【Xcode 12.1,使用Swift或者OC创建工程】 目标:删除Main storyboard,并解决启动黑屏问题1,删除Main storyboard文件;2,项目配置里General-->Main Interface 置空;3,工程里包含了SceneDelegate文件,AppDelegate文件中的window属性放到了SceneDelegate中,交给SceneDelegate来管理window。 SceneDelegate文件是为了实现iPadOS支持...

2021-03-05 11:06:18 1510 3

原创 友盟推送(iOS开发)

友盟推送(iOS开发)前置说明:【开发工具:Xcode12.1 真机iPhone12 14.4;】 【已经注册了友盟账号,获取了UMAppKey;】 【已经注册了开发者账号,已经获得了:App ID,Bundle ID,Team ID】一,推送SDK的集成与项目配置1,友盟SDK集成(选择了自动集成) pod 'UMCommon' pod 'UMPush'2,项目配置2.1...

2021-03-03 18:03:31 1008 2

原创 Xcode11 新建工程(启动黑屏问题)

升级Xcode 11.0之后,发现创建项目新增SceneDelegate文件,AppDelegate文件中的window属性放到了SceneDelegate中,交给SceneDelegate来管理window。这一变化是为了实现iPadOS支持多窗口的结果,目前iPhone暂不支持分屏(多窗口);(使用xcode11新建工程,target选择iOS13以下版本,app启动黑屏。)为适配13.0以下的iPhone开发且不使用iPad多窗口,需进行以下操作:1,直接删除Sce...

2020-05-18 14:03:35 1498

原创 数据存储 (IOS开发)

常见的数据存储方式:Plist格式文件存储:PropertList属性列表 NSUserDefaults存储 解归档存储:NSKeyedArchiver归档/ NSKeyedUnarchiver解档 数据库:SQLite3,基于SQLite3的FMDB,CoreDataPlist文件Plist文件,即属性列表文件。 可以存储的数据类型有:Array、Dictionary...

2020-02-04 22:35:26 191

原创 gitignore文件—iOS

iOS 项目gitignore文件中包含文件类型解释build/:项目编译过程中产生的文件和数据 *.pbxuser:It stores the user's preferences for the project, e.g. window sizes, active build style, file bookmarks, and a few other things.储存了用户项目偏好...

2019-12-27 11:16:36 248

原创 多台电脑使用一份ssh密钥对

多台电脑使用同一ssh密钥对前提:多台电脑都已经安装了git在创建密钥的电脑中拷贝位于用户目录下的隐藏文件夹~/.ssh/中id_rsa和id_rsa.pub的两个文件; 隐藏文件的地址:终端输入: cd ~/.sshpwd 输入以上命令后得到影藏文件的地址,进入该地址 拷贝密钥对文件。 同样的方法找到另一台电脑的隐藏文件,将准备好的两个文件拷贝进...

2019-11-12 09:02:14 4130

原创 setObject:forKey 与 setValue:forKey

setObject:forKey与setValue:forKey两种方法都可以对可变字典进行修改;setObject:forKey是NSMutableDictionary提供的方法,只能操作可变字典; setValue:forKey是KVC提供的方法,可以对绝大部分对象进行操作(包括自定义对象);(注意:如果是对象调用此方法,那key必须是这个对象上的属性,不然调用了也没有什么效果)...

2019-11-03 12:23:11 960

原创 unrecognized selector sent to instance XXXXX

unrecognized selectorSEL(@selector)原理:@selector()是取类方法的编号,取出的结果是SEL类型。SEL:类成员方法的指针,与C的函数指针不一样,函数指针直接保存了方法的地址,而SEL只是方法的编号。SEL消息机制的工作原理:Objective-C对象都是C语言结构体,所有的对象都有一个isa的变量,而isa变量指向该对象的类。类...

2019-09-27 15:27:09 11851 1

原创 属性修饰词(assign,weak,strong, retain,copy.....)

assign:用于对基本数据类型进行赋值操作,不更改引用计数被assign修饰的对象在释放后,指针的地址还是存在的,也就是说指针并没有被置为nil,成为野指针。如果后续在分配对象到堆上的某块内存时,正好分到这块地址,程序就会crash。之所以可以修饰基本数据类型,因为基本数据类型一般分配在栈上,栈的内存会由系统自动处理,不会造成野指针。weak:引用不计数,修饰Object类型,修...

2019-09-27 11:54:41 487

原创 IOS开发——七种手势(UIGestureRecognizer)

1 UITapGestureRecognizer(点击手势)//1.创建手势对象UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapClick:)];//2.手势相关的属性//点击次数(默认1...

2019-09-19 18:04:15 311

原创 Category分类、Extension扩展、继承(ios开发篇)

Category分类的定义:分类的作用是扩展已有类的功能。类别是OC特有的属性,可以在不改变类名和原类的实现的前提下,进行类的扩展。为原有的类增加方法; 在方法内部可以访问原有类的成员变量,但这些成员变量一定要定义在头文件中;分类的使用:为原有的类创建一个分类; 在分类中增加新的方法的声明和实现; 以下几种情况,最好使用分类:(1)针对系统的一些类进行扩展。例如,NSStr...

2019-09-09 22:23:42 332

原创 iOS常用控件尺寸

【常识介绍】px:像素pt:独立像素 / point / 点iOS 开发中用到的单位 pt 是独立像素的意思,它是绝对长度,不随屏幕像素密度变化而变化(和我们日常用到的毫米、厘米是一个意思,只是它要小得多),在非视网膜的 iPhone 上(iPhone 3G),苹果规定 1px=1pt,也就是说 pt 和像素点是一一对应的。但随着 iPhone 4 的到来,高分屏出现了(视网膜屏),这个时...

2019-09-05 11:34:27 2306

原创 #include、#import、@class

#include 在C和C++里,用来导入头文件的关键字。#include就是进行简单的复制和粘贴,将目标.h文件中的内容一字不落的拷贝到当前文件中,并替换掉这句include。【在使用#include的时候要注意处理重复引用的问题,这也是objc中#include与#import的区别】#import 在OC里,用来导入头文件的关键字。#import大部分功能和#include...

2019-08-19 23:05:42 204

原创 苹果开发者账号

苹果开发者账号(个人、公司、企业)的区别苹果开发者账号分为个人(individual),公司(company),企业(enterprise)三种类型。个人账号只能有一个开发者,公司账号允许多个开发者协作开发,企业账号其App只能用于内部员工使用,是无法对外公开的。所以,通常情况下大家都是选择个人或者公司账号。1. 个人账号(Individual)费用99美金一年,该账...

2019-07-09 10:33:52 995

原创 iOS 开发——企业开发者帐号使用方法

企业开发者帐号使用方法:第一步:在企业开发者账户里找到如下:第二步:第三步:第四步: 在你开发的电脑上生成CSR文件,前往—>实用工具—>钥匙串访问(打开)—>证书助理—>从证书颁发机构请求证书第五步:第六步:第七步:填写文件名字,这个名字将来就是你在Xcode工程里要选择的证书名称:用公司名称或者开发者名称或者应...

2019-06-12 22:55:00 3553 2

原创 KVC 和 KVO (IOS开发)

KVC(Key-value coding)键值编码KVC定义:KVC(Key-value coding)键值编码,就是指iOS的开发中,可以允许开发者通过Key名直接访问对象的属性,或者给对象的属性赋值。而不需要调用明确的存取方法。这样就可以在运行时动态地访问和修改对象的属性。KVC的操作方法由NSKeyValueCoding协议提供,而NSObject就实现了这个协议,也就是说Ob...

2019-05-22 18:51:14 116

原创 线程中同步、异步、串行、并行 (IOS开发)

【基础知识点】进程:可理解成一个可执行文件的执行过程。在ios app上的话我们可以理解为我们的app的.ipa文件执行过程也即app运行过程。杀掉app进程就杀掉了这个app在系统里运行所占的内存。线程:线程是进程的最小单位。一个进程里至少有一个主线程。就是那个main thread。非常简单的app可能只需要一个主线程即UI线程。当然大部分还是会有一些子线程的,比如如果你用了AFNet...

2019-04-30 16:33:02 1121

原创 CADisplayLink (IOS开发)

CADisplayLink简单介绍一、什么是CADisplayLink简单地说,它就是一个定时器,每隔几毫秒刷新一次屏幕。CADisplayLink是一个能让我们以和屏幕刷新率相同的频率将内容画到屏幕上的定时器。我们在应用中创建一个新的CADisplayLink对象,把它添加到一个runloop中,并给它提供一个target和selector在屏幕刷新的时候调用。...

2019-04-29 18:12:40 249

原创 GCD定时器 (IOS开发)

GCD定时器Dispatch Source Timer 是一种与 Dispatch Queue 结合使用的定时器。当需要在后台 queue 中定期执行任务的时候,使用 Dispatch Source Timer 要比使用 NSTimer 更加自然,也更加高效(无需在 main queue 和后台 queue 之前切换)。(页面的倒计时功能,直接按照代码示例进行 就很OK)代码示例如下:...

2019-04-29 18:11:32 1804

原创 NSTimer (IOS开发)

一 什么是NSTimertimer是一个能在从现在开始的后面的某一个时刻或者周期性的执行我们指定的方法的对象。总结为三要素:时间间隔、被触发、发送消息(执行方法)二 NSTimer使用方法初始化系统提供了8个创建方法,6个类创建方法,2个实例初始化方法。有三个方法直接将timer添加到了当前runloop default mode,而不需要我们自己操作,当然这样的代价是...

2019-04-27 15:06:35 2735

原创 关于NSData---NSDateFormatter---NSString---NSTimeInterval (IOS开发)

NSData初始化1,返回当前时间(NSDate用来表示公历的GMT时间(格林威治时间),比北京时间早了八个小时)NSDate *date = [[NSDate alloc] init];//NSDate *date = [NSDate date];2,以当前时间的偏移秒数来初始化。以下表示当前时间20秒以后NSDate *...

2019-04-26 10:43:24 484

原创 程序使用状态(启动程序、杀死程序、进入后台、复原程序 等)(IOS开发)

以下是几种程序在使用时进入或退出调用函数的步骤,在进行上述操作时 UIApplicationDelegate委托会收到通知,你可以重写以下方法,在当时的状态下记录时间戳,保存数据等。(记录一个程序的使用时间,只需要在5变为活跃状态 和2将变为非活跃状态时记录当时的时间戳,差值即为程序使用时间。)新安装一个程序并启动:1启动程序;5变为活跃状态点击一次home...

2019-04-24 11:03:18 1047

原创 屏幕尺寸——所有设备 (IOS开发)

所有设备型号官网地址:https://www.theiphonewiki.com/wiki/ModelsiPhone:机型 像素 比例 像素密度 屏幕尺寸 机型代码 发布日期 iPhone 2g 480×320 3:2 163ppi 3.5 iPhone1,1 2008.01 iPhone 3g 480×...

2019-04-16 18:11:26 1921

原创 自动布局—— UIViewAutoresizing(autoresizingMask) (IOS开发)

1. IOS有两大自动布局利器:autoresizing 和 autolayout。autoresizing是UIView的属性,一直存在,使用也比较简单,但是没有autolayout那样强大。如果你的界面比较简单,要求的细节没有那么高,那么你完全可以使用autoresizing去进行自动布局。2. UIViewAutoresizing是一个枚举类型,默认是UIViewAutore...

2019-04-15 15:34:43 339

原创 关于UITableView ——刷新、cell复用

1,刷新方法1.1刷新某个section中的row[UIView performWithoutAnimation:^{ [m_tableView reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:row inSection:1]] withRowAnimation:UITableViewRo...

2019-04-02 11:38:18 398

原创 数据存储——NSUserDefaults (IOS开发)

1,NSUserDefaults是iOS系统提供的一个单例类(iOS提供了若干个单例类),通过类方法standardUserDefaults可以获取NSUserDefaults单例。如:NSUserDefaults *default =[NSUserDefaults standardUserDefaults];(一般对于一些基本的用户设置,因为数据量很小,可以使用 NSUserDefault...

2019-03-19 16:39:56 416

原创 通知机制 NSNotification (IOS开发)

关于通知机制备忘如下:1 消息中心(NSNotificationCenter)不同于代理用于一对一的传递消息,通知机制用于多对多的传递消息。这个信息的传递是通过消息中心(NSNotificationCenter),每一个应用程序都有一个通知中心(NSNotificationCenter)实例,专门负责协助不同对象之间的消息通信。任何一个对象都可以向通知中心发布通知(NSNotificati...

2019-02-27 11:56:06 190

原创 IOS 键盘弹出 布局变化

#pragma mark - 键盘通知- (void)addNoticeForKeyboard {//注册键盘出现的通知[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification objec...

2019-02-27 11:12:37 953

原创 iOS 开发者账号里新增测试真机

开发者账号里增加测试真机的步骤:第一步:真机连接在电脑上 打开XcodeWindow下有一个Device and Simulators 在如下图identifier 粘贴出来待使用第二步:点击下图的加号 然后把粘贴的ID复制进去 名字随便什么都行 然后点击continue第三步:按下图点击. edit 然后选中新加到的真机 然后download新的证书 下载...

2019-02-26 18:28:23 1564

原创 关于懒加载 (iOS开发)

懒加载懒加载又称为延迟加载,它是指系统不会在初始化时就加载某个对象,而是在第一次调用(使用get方法)时才加载这个对象到内存中。简单来说,就是某个对象被使用的时候再加载。懒加载的实现方式:重写对象的get方法,并将该对象在初始化时需要实现的代码在get方法中实现。举例子:@interface ViewController ()@property (nonatomic, stro...

2019-02-26 17:41:45 992

原创 iOS APP更新版本打包上线 (iOS开发篇)

 一,项目打包部分:1. 将你在开发者账号中下载的发布证书(或者从钥匙串中导出的p12文件)和描述文件分别双击进行安装。(关于证书安装真的很费劲,其中P12文件要用开发者账号本机器才能获取到带密钥的证书,更具体请查阅其他相关资料)2. 然后打开xcode,点击最顶部左侧有蓝色图标的工程, 然后出现如下界面;请将signing、Signing(Debug)、Signing(Relea...

2019-01-22 11:27:03 6903

原创 UITableViewCell初始化的两种方式 (iOS开发篇)

 UITableViewCell的两种初始化方式(dequeueReusableCellWithIdentifier):1,不注册cell的方式:      UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cellID"];      if (cell == nil) {         ...

2018-10-26 09:57:53 3639

原创 Runtime (ios开发篇)

1,runtime基本知识点:RunTime简称运行时,就是系统在运行的时候的一些机制,其中最主要的是消息机制。 对于C语言,函数的调用在编译的时候会决定调用哪个函数,编译完成之后直接顺序执行,无任何二义性。 对于OC的函数,属于动态调用过程,在编译的时候并不能决定真正调用哪个函数(事实证明,在编译阶段,OC可以调用任何函数,即使这个函数并未实现,只要申明过就不会报错。而C语言调用未实现的...

2018-10-09 12:53:59 138

原创 NSArray & NSMutableArray

【基础知识点】a: Foundation中数组(NSArray)是有序的对象集合b: NSArray只能存储Objective-C的对象,而不能存储像int、float这些基本数据类型,但是Objective-C对C兼容,所以在Objective-C程序中,仍然可以使用C的数组来存储基本数据类型c: NSArray一旦创建便不可以再对它就进行更改,如果要进行对数组的增、删、改等操作的话...

2018-08-28 17:04:57 298

原创 【CAShapeLayer & UIBezierPath】边框设置(iOS开发篇)

UIView*View = [[UIViewalloc] initWithFrame:(CGRectMake(0, 0, 100, 100))];View.center = self.view.center; [self.view addSubview:View];View.backgroundColor = [UIColorgrayColor];一  实线边框View.lay...

2018-08-28 17:02:26 5854

原创 UIScrollView控件介绍(iOS开发篇)

UIScrollView控件介绍一、知识点简单介绍1.UIScrollView控件是什么?(1)移动设备的屏幕⼤大⼩小是极其有限的,因此直接展⽰在用户眼前的内容也相当有限;(2)当展⽰的内容较多,超出⼀个屏幕时,⽤户可通过滚动手势来查看屏幕以外的内容;(3)普通的UIView不具备滚动功能,不能显⽰过多的内容;(4)UIScrollView是一个能够滚动的视图控件,可以⽤来...

2018-08-17 15:30:26 254

转载 iOS 系统架构和常用框架 (iOS开发篇)

(一)iOS的系统架构iOS基于UNIX系统,iOS的系统架构分为四层,由上到下一次为:可触摸层(Cocoa Touch layer)、媒体层(Media layer)、核心服务层(Core Services layer)、核心操作系统层(Core OS layer),如下图: (1)触摸层:为应用程序开发提供了各种常用的框架并且大部分框架与界面有关,本质上来说它负责用户在iOS设...

2018-08-14 18:08:39 17786

空空如也

空空如也

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

TA关注的人

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