普帅同学的博客

心里有光,就不怕远处的黑暗

解决 git checkout a 出现的问题

解决 git checkout a 出现的问题 解决方案 今天,提交代码需要合并分支的时候,当在终端输入git checkout master 命令时,却报了如下错误: 1234error: Your local changes to the following files would be overwritten by checkout: Assistant.xcworkspace/xcu......

iOS 图片处理的小 Tips

UIImage 的本地保存 保存 UIImage 有三种方式: 直接使用 NSKeyedArchiver,把 UIImage 序列化保存 用 UIImagePNGRepresentation() 把图片转为 PNG 保存 用 UIImageJPEGRepresentation() 把图片压缩成 JPEG 保存。 其中,方法一也是调用了 UIImagePNGRepresentation 进......
iOS

iOS Crash 的学习

iOS Crash 的知识梳理 [TOC] iOS 上的 APP 会遇到各种各样的原因,第三方库不兼容、响应超时、内存等都可能造成 Crash 。但是更多的情况是 程序本身的代码逻辑产生了错误。比如,NSArray等集合容器的越界问题、调用不存在的方法,调用函数参数不符合要求等等。 在开发的过程中,我们可以在 Xcode 上通过一些方法可以捕获到异常,从而定位到出错代码。但是对于已经发布的 ......
iOS

Cocoapods 报错的解决方案 (macOS 10.13)

很久没有新写项目了,今天晚上通过 cocoapods 给项目添加第三方库的时候,突然提示 -bash: /usr/local/bin/pod: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby: bad interpreter: No such file or directory 这样的错误信息。 发现是系......
iOS

链表的常见面试算法

链表的基本概念 链表是一种递归的数据结构,它或空、或指向一个结点的引用,该节点还有一个元素和一个指向另一条链表的引用。 涉及到的考点 数组与链表的区别: 从内存分配和存储来说:数组在静态存储分配情形下,存储元素数量受限制,动态存储分配情形下,虽然存储空间可以扩充,但需要移动大量元素,导致操作效率降低,而且如果内存中没有更大块连续存储空间将导致分配失败;链表存储的节点空间只在需要的时候申请分......

iOS常见的面试题

iOS 常见面试题(持续更新) 本篇文章的面试题目来源于自己、实验室同学。还有部分来自网上他人的博客。文章大部分讨论 iOS 方面,也会涉及到计算机网络、操作系统、数据结构等知识。 [TOC] 1 Objective-C 基础部分 1.1 为什么说 Objective-C 是一门动态的语言? 由于runtime这个运行时机制,才为OC增添了动态性,它的动态特性、动态绑定、动态加载等特性,才使......

iOS 多线程之GCD

iOS 多线程之 GCD 的简单介绍 [TOC] 引言 这篇文章主要是为大家简单的讲解一下多线程的基础理论知识,然后会着重同大家学习GCD的使用。 多线程的知识 进程线程的了解 学过操作系统的同学,都知道进程和线程的知识,这里就简单的说一下。 什么是进程 进程是指可以并发执行的程序在某个数据集合上的运行过程,是系统进行资源分配和调度的独立单位。说的通俗一点,进程是指在系统中正在运行的一个应......
iOS

weak 的实现原理

只要学过 iOS 的人,都会对 strong、weak、copy等关键字应该都会很熟悉。weak 属性关键字就是弱引用,它不会增加引用计数但却能保证指针的安全访问,在对象释放后置为 nil,从而避免错误的内存访问。主要为了解决循环引用的问题。 接下来,我们会从 objc 库中的 NSObject.mm、 objc-weak.h 以及 objc-weak.mm 文件出发,去具体了解 we......
iOS

Charles 抓包分析

Charles 是在Mac下常用的截取网络封包的工具,在做iOS开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。Charles通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。 使用 Charles 抓包的过程 http 抓包 对于 mac 在 mac 下进行 http 抓包,非常简单,只要打开 Ch......

iOS UIResponder 的学习

UIView 的指责之一是处理事件,一个视图是一个事件响应者,可以处理点击等事件。而这些事件就是在 UIResponder 类中定义的。 一个 UIResponder 类为那些需要响应并处理事件的对象定义了一组接口。这些事件主要分为两类:触摸事件和运动事件。 在 UIKit 中,UIApplication、UIView、UIViewController 这几个类都是直接继承自 UIRes......
iOS