自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

王俊岭的博客

分享, 才能促进世界更美好

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

原创 iOS面试题总结-未完待续

iOS面试总结1. 网络HTTP协议(HyperText Transfer Protocol)的请求和响应请求: 请求头, 请求行, 请求体请求行: 指定请求方法, 请求路径 协议版本等信息请求头: 描述客户端环境, 例如: host要请求的主机地址, UserAgent客户端类型, Accept 可接受数据类型, Accept_language可接受语言请求体: 客户端要发送的具体数据, 例如上传时的上传数据响应: 状态行,响应头, 响应数据状态行: 包含http协议版本,

2020-07-13 14:05:54 419

原创 Masonry框架源码分析

相信大多数iOS开发者对Masonry框架并不陌生 , 本文是笔者通读Masonry的代码之后的一篇总结, 也希望可以帮助大家更好的理解该框架. 怎奈笔者才疏学浅, 如有遗漏或错误也欢迎大家评论区指出, 大家一起进步!iOS布局的演进在说Masonry, 先简单介绍一下iOS开发屏幕适配的发展过程. 在iPhone3Gs/4/4s时代, 手机屏幕尺寸都是一样的, 对于开发者来说基本不用适配,彼时的屏幕布局基本都是采用frame, 但是随着iPad的出现, frame布局便不能满足需求, 苹果开始推出A

2020-05-18 14:11:34 494

原创 旧款Mac开启随航(sideCar)功能

看到这个标题, 不得不吐槽苹果, 命名软硬件都可以支持, 但是故意让旧设备不支持这个功能, 真是鸡贼, 吐槽完毕!本文参考博客: http://dev.zeppel.eu/luca/SidecarCorePatch, 里面是英文版的, 所以我总结翻译以下几点:适用电脑 imac 2015 later之前的设备, MacBook 2016之前的设备当前系统是最新系统macOS 1...

2019-10-30 13:11:49 23243 1

原创 解决Xcode 11 / iOS 13 的坑

Xcode 运行不了模拟器和真机这个问题在升级Xcode 10的时候其实已经解决过一次, 根本原因就是Xcode10 开始苹果删除了几个C++ 运行库报错如下:dyld: Library not loaded: /usr/lib/libstdc++.6.dylib Referenced from: ************************* Reason: no suitab...

2019-10-11 16:56:03 6438

原创 细说OC中的KVO

KVO这个特异功能相信很多人都应该熟知, 就算工作时没有用到, 那么面试的时候肯定被面试官提到过, 虽然算不上黑魔法, 但是了解一下实现原理, 对我们还是有很大帮助的, 下面笔者将一步一步深挖KVO的实现原理!创建一个Person类, 添加一个属性name, 当然你可以添加任何你想要的属性, 这里笔者就用name来做演示使用@interface Person : NSObject@pr...

2018-09-05 13:39:21 1102

原创 iOS自动布局之VisualFormat

VFL是苹果推出的用来AutoLayout布局的一门比较形象的语言, 本身为字符串,虽然用起来比较麻烦, 但是相比直接使用苹果的另一个套布局方案要少写一些代码, 那么问题来了, github上那么多自动布局的框架, 简单又好用, 为什么要用这么复杂的代码去布局呢, 之前我也这么想, 直到有一天自己想封装一个框架的的时候才发现, 不能处处依赖别人的框架去封装, 因为这样的话, 你封装的框架几乎...

2018-08-17 23:38:15 501

原创 正则表达式没那么难

正则表达式没那么难[] 表示一位字符[a] 表示字母a String regex = "[a]"System.out.println("a".matches(regex));//trueSystem.out.println("aa".matches(regex));//falseSystem.out.println("b".matches(regex)); //fals...

2018-08-06 19:52:17 562

原创 Flutter 安装 (Mac环境)

Flutter 安装今天偶然看到一个公众号写了一篇关于Flutter 的文章, 感觉挺好, 所以就来尝试一下, 整个安装过程挺简单, 但也不是特别顺利, 因为我自己使用的是Mac系统所以这里所有操作都是Mac系统下的操作安装Flutter SDK编写你的第一个 Flutter App 这篇文章有SDK和编辑器的下载方式, 我这里推荐使用git下载//1.终端中输入以下指...

2018-06-22 00:47:05 24162 5

原创 iOS开发如何判断当前控制器进出栈状态

-(void)viewWillDisappear:(BOOL)animated { NSInteger index = [self.navigationController.viewControllers indexOfObject:self]; if(index == NSNotFound) { //即将出栈,销毁 } else { //...

2018-06-14 18:51:27 1310

原创 友盟系模块化升级遇到的问题

友盟系模块化升级遇到的问题好久没有更新过pod, 最近由于新需求添加了一个框架所以进行pod更新, 不更新不知道, 更新了吓一跳呀, Command + B 编译一下一大堆报错, 天啊, 我做错了什么? 去友盟官网翻看了文档才发现原来是 友盟把微信SDK给精简了, 删除了支付模块, 这还不算, 更重要的是pod库导入都变化了, 仔细阅读文档, 原来是友盟这边进行了组件化划分, 看起来是...

2018-05-19 09:25:34 8282

原创 UITableView删除行到最后一条时崩溃

UITableView删除行到最后一条时崩溃很少用到UI删除, 今天遇到一个小坑, 下面这行代码调用就会报错//删除ui内容[self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone]; //删除数据源[self.dataArr removeObj...

2018-03-22 00:01:00 966

原创 git 撤销更改

git 撤销更改总结一下希望以后不再记混淆, 也希望看到这里的同学不犯同样的错, 这里主要介绍一下几种错误的解决方案:已修改未暂存内容的撤销已暂存未提交内容的撤销已提交未推送内容的撤销已推送服务器内容的撤销以上几种情况几乎覆盖到工作中常用的所有情况, 当然你要是有更复杂的情况, 那就只能再想想别的办法, 因为我这边只有两个人同时开发, 所以遇到的情况就这些, 下面说一下解决方...

2018-03-08 10:46:10 272

原创 ipa包上传itunes store失败

昨天打包上传ipa包, 遇到了故障, 开始以为是网络问题, 但是切换了各种网络之后发现这个不是网络问题, 我推测应该是苹果在mac上更新了什么东西, 换用application Loader 工具上传还是不行, 但是比Xcode直接上传的好处是 可以看到错误日志An error occurred while starting bundles for the software updat...

2018-02-26 10:32:13 1441 1

原创 JPush的坑

极光推送的坑, 竟然没有在官方文档中找到解决方案

2017-03-14 23:31:14 4916

原创 iOS支付宝AlipaySDK与阿里百川反馈YWFeedbackFMWK冲突

总结一下从昨天晚上到今天上午踩过的坑, 希望能对大家有所帮助!很多时候很多大事件貌似和我们没有关系, 但是冥冥中可能某天, 你就会感受到某个事件的影响, 比如阿里巴友盟收购了, 之前还觉得只是一个大公司收购一个小公司, 和自己没有啥关系, 但是慢慢地, 有些问题就开始暴露了, 前段时间, 友盟用户反馈sdk 突然停止服务, 给了一个阿里百川的服务, 让去迁移, 然后作为开发者, 你可以选

2017-01-09 14:23:11 6850 6

原创 OC字符串中特殊字符的修剪

最近公司项目中需要字符串修剪, 而且项目中每个地方的需求还不太一样, 所以写了下面的一个分类, 感觉挺好用分享出来给大家, 希望遇到同样问题的同志少花时间, 注释比较清晰, 我就废话不多说了, 看代码

2017-01-06 13:24:13 1121

原创 Mac系统原生支持NTFS格式硬盘

​ 所有的办法都是在没有办法的情况下才能找到, 之前一直用的 Paragon NTFS, 当然虽然是程序员有两种方式, 一种就是支持自己的事业,用收费的, 另一种就是发挥自己的特长, 去破解. 无奈承担不起Paragon NTFS每个版本更新都要重新购买的费用, 如果一次购买终身有效19.9刀结果面前可以接受. 但是破解版的终归不是最终的解决方案, 系统升级或软件升级之后就会一堆头疼的事,

2016-12-28 10:22:48 17757 5

原创 YYWebImage加载短链图片

因为公司的图片地址是放在第三方平台上的, 所以链接都比较长, 后端为了使用方便将其转换成了短连接, 那么问题来了, 在安卓和网页端都可以正常打开, 我的iOS图片死活加载不了, 然后在网上各种搜索, 实在是找不到相关的问题, 后来自己摸索终于找到了解决方案, 下面说一下, 希望对有同样需求的同学有帮助!主要原因就是其默认的接收类型仅仅是图片类型的, 而短连接中间是又一次跳转的, 所以需要修

2016-10-31 14:49:53 1160

原创 AFN做post请求,参数为数组的坑

公司后端哥们给了接口文档, 于是就兴致勃勃的开发, 结果有一个接口死活返回不了数据, 检查了上传参数, 里面有个参数需要一个列表, 也就是我们oc中的数组, 数组中全是整型数据, 打印出所有的上传参数之后发现也没啥问题, 于是就找后端的哥们, 后端那哥们以后咬定接口没问题, 他自己测试都没有问题, 非要我再仔细检查, 无奈又检查参数, 这次仔细的检查发现我上传的数组参数是这个样子

2016-09-20 08:20:31 7769 1

原创 NSArray

数组学习总结无论是字符串还是数组亦或是字典, 其实学习过程无外乎 增/删/改/查 四个操作, 下面就分别说一下数组学习中的增删改查的操作1. 创建数组// NSArray 的构造方法NSArray *array = [[NSArray alloc] initWithObjects:@"123", @"abc", @"abcdefg", nil];// 在 OC 中字符串有字面量常量, 数组也有字

2016-08-29 15:01:19 683

原创 NSCharacter​Set使用

NSCharacter​Set使用NSCharacterSet ,以及它的可变版本NSMutableCharacterSet,用面向对象的方式来表示一组Unicode字符。它经常与NSString及NSScanner组合起来使用,在不同的字符上做过滤、删除或者分割操作。为了给你提供这些字符是哪些字符的直观印象,请看看NSCharacterSet 提供的类方法:alphanumericCharact

2016-08-24 09:57:49 416

原创 NSString

字符串总结1. 创建//构造方法NSString *s1 = [[NSString alloc] initWithFormat:@"%@ 真简单", @"iOS开发"];//类方法NSString *s2 = [NSString stringWithFormat:@"%@ 好简单啊", @"OC"];// 将 C 语言字符串转换成 OC 字符串NSString *s3 = [[N...

2016-08-23 23:54:13 261

原创 isKindOfClass 与 isMemberOfClass的区别

isKindOfClass  判断的是否是该类的类型或者是该类子类的类型 isMemberOfClass 判断是否是该类的类型

2016-08-08 16:06:53 306

原创 iOS二维码扫描/识别

本文提供了一套完整的二维码扫描与相册二维码识别的方案

2016-07-26 23:31:41 4507

原创 MagicalRecord关闭打印日志

在MagicalRecord初始化呢的地方调用类方法[MagicalRecord setLoggingLevel:];MagicalRecordLoggingLevel是一个枚举类型MagicalRecordLogLevelOff: 关闭打印日志,不输出任何东西MagicalRecordLoggingLevelError:  输出错误信息MagicalRecordLoggi

2016-07-08 10:51:43 720

原创 CocoaPods和git一起使用的问题

很多时候, 由于项目中用到的第三方框架较多, 如果每个框架都手动管理的话, 一般会造成,git服务器中项目过大, 最终导致的问题是当代码管理库, 就会省去第三方sdk的备份时间, 而且, 在push时只需要push管理文件就行, 节省很多空间. 下面就讨论一下CocoaPods和git一起使用时的注意事项首先就是关于pod的那部分内容需要纳入git管理,   pod文件需要纳入git管

2016-07-04 14:00:50 7081

原创 CocoaPods如何指定版本号

一个简单的podfile:pod 'AFNetworking', '~> 1.0' 版本号可以是1.0,可以是1.1,1.9,但必须小于2 一个更简单的podfile:pod 'AFNetworking', '1.0' // 版本号指定为1.0 一个更更简单的podfile:pod 'AFNetworking',  //不指定版本号,任何版本

2016-07-04 13:17:33 24688

原创 Charles网络抓包工具使用教程

1. 前言:Charles是一款抓包修改工具,相比起burp,charles具有界面简单直观,易于上手,数据请求控制容易,修改简单,抓取数据的开始暂停方便等等优势!作为程序员, 这个工具的使用还是必须,  废话不多说,  来点实在的, 下面来详细介绍下这款强大好用的抓包工具的使用2. 下载安装首先需要下载java的运行环境支持(一般用burp的人肯定也都有装java

2016-06-20 11:54:15 19572 3

原创 iOS面试题整理(下) 仔细研读受益匪浅

21. 下面的代码输出什么? @implementation Son : Father - (id)init { self = [super init]; if (self) { NSLog(@"%@", NSStringFromClass([self class])); NSLog(

2016-06-19 15:42:06 2691

原创 iOS面试题整理(上) 仔细研读受益匪浅

请静下心仔细研读, 定能学到很多知识

2016-06-19 14:50:43 4651 3

原创 AssetsLibrary框架简单介绍

该框架下有几个类,ALAssetsLibrary,ALAssetsGroup,ALAsset,ALAssetsFilter,ALAssetRepresentation。ALAssetsLibrary类ALAssetsLibrary类可以实现查看相册列表,增加相册,保存图片到相册等功能。例如enumerateGroupsWithTypes方法列举所有相册。AL

2016-06-12 01:21:15 1198

原创 iOS开发如何在一个透明视图上添加不透明的子控件

相信很多同学都会遇到过这个问题, 当我们弹出一个半透明的遮盖层时, 又想在遮盖层上加一些子视图, 这个时候如果你的遮盖层设置了alpha属性,  你会惊讶的发现, 加载遮盖层上的所有子控件都是透明了,  错误做法如下:view.backgroundColor = [UIColor clearColor];view.alpha = 0.8;想解决这个问题重点是不要设置view全局透明,

2016-06-06 01:11:11 6422

原创 Runtime运行时用法1------获取类属性列表

提起Runtime运行时很多初学者会望而却步, 但是仔细想想, 我们要读懂别人框架的实现原理, 这些东西还是需要去学习了,  正所谓, 怕什么什么就是你的缺点, 面对我们知识层面的不足, 我们一定要勇敢地去克服. 好了扯淡部分结束, 进入正题!如标题所示, 本文将详细说明如何获取属性列表, 以及用途!对于任何想要使用的东西, 第一件事就是导入头文件, Runtime也不例外.  我们通过R

2016-05-27 00:31:13 2841

原创 AFN和ASI的区别

1>  AFN基于NSURL(NSURLSession&NSURLConnection),ASI基于底层的CFNetwork框架,因此ASI的性能优于AFN2>  AFN采取block的方式处理请求,ASI最初采取delegate的方式处理请求,后面也增加了block的方式3>  AFN只封装了一些常用功能,满足基本需求,直接忽略了很多扩展功能,比如没有封装同步请求;ASI提供的功能较多,

2016-05-21 17:06:33 357

原创 Cocoapods快速安装

CocoaPods 是 iOS 最常用最有名的类库管理工具作为 i程序员,掌握 CocoaPods 的使用是必不可少的基本技能下面为安装教程, 所有命令都是在终端中操作的mac上快速安装# 删除源(这个系统自带的不好用)$ sudo gem sources -r https://rubygems.org/# 添加源(使用淘宝的镜像,记住要用https)$ sudo gem sour

2016-05-21 13:06:20 318

原创 launchOptions的key

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions,  当应用程序启动时执行,应用程序启动入口。只在应用程序启动时执行一次。application参数用来获取应用程序的状态、变量等,值得注意的是字典参数:(NSDictionary *

2016-05-20 19:43:59 1084

原创 iOS应用崩溃日志分析

1.  什么是崩溃日志,从哪里能得它?iOS设备上的应用闪退时,操作系统会生成一个崩溃报告,也叫崩溃日志,保存在设备上。崩溃日志上有很多有用的信息,包括应用是什么情况下闪退的。通常,上面有每个正在执行线程的完整堆栈跟踪信息,所以你能从中了解到闪退发生时各线程都在做什么,并分辨出闪退发生在哪个线程上。有几种方法可以从设备上获取崩溃日志。设备与电脑上的iTunes Store同步后,会

2016-05-20 14:44:37 5218

原创 HTTP状态码整理

1xx消息 这一类型的状态码,代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束。由于HTTP/1.0协议中没有定义任何1xx状态码,所以除非在某些试验条件下,服务器禁止向此类客户端发送1xx响应。这些状态码代表的响应都是信息性的,标示客户应该采取的其他行动。 100 Continue   客户端应当继续发送请求。这个临

2016-05-17 15:58:00 3138

原创 iOS开发中常见的单例类

UIApplication, NSUserDefault, NSNotificationCenter,   NSURLSession,  NSFileManager ,NSURLCache

2016-05-16 23:34:42 332

原创 Block为什么用copy修饰

默认情况下,block是存档在栈中,可能被随时回收,通过copy操作可以使其在堆中保留一份, 相当于一直强引用着, 因此如果block中用到self时, 需要将其弱化, 通过__weak或者__unsafe_unretained.  以下是示例代码及其说明,  读者可以试着打印出不同情况下block的内存情况//// ViewController.m// 为什么bloc

2016-05-12 23:31:45 9750 1

空空如也

空空如也

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

TA关注的人

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