NSString、NSMutableString 可变与不可变的那些事儿
简介这篇文章的主要包含如下内容: 可变对象和不可变对象 NSString 的 copy 和 mutableCopy NSMutableString 的 copy 和 mutableCopy property 中 copy、strong 修饰 NSString property 中 copy、strong 修饰 NSMutableString 很多 iOS 开发的朋友会争论一个问题,我用 ...
OC: self
为了更好的说明 Objective-C 中的 self,我们先从 Java 的 this 关键字开始来引入话题。 Java 中的 this在 Java 中 this 关键字表示当前类对象,其只能在类的非静态方法中使用,静态方法和静态的代码块中绝对不能出现 this,this 只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的 this. 先看一个 Java 示例,能说明上面的问题,...
Wireshark: 分析 TCP 四次挥手
简介首先要明白 TCP 协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。 其次,TCP 是全双工模式,需要两边的连接全部关闭,此 TCP 会话才算完全关闭,四次挥手使得 TCP 的全双工连接能够可靠的终止。 TCP 的连接的拆除需要发送四个包,因此称为四次挥手(Four-way handshake),也叫做改进的三次握手。客户端或服务器均可主动发起挥手动作,在 socket 编程中...
当 NTFS 遇上 MacOS
简介自己使用的 MacBook Pro 电脑是 256G 的,这个本陪了我5个春秋,性能依旧强劲,一直舍不得抛弃换新(好吧,我承认自己穷)。 由于工作需要,里面安装了不少软件,也存储了不少资料,逐渐发现硬盘容量不足,我也一直在删除一些非必要的东西,发现还是杯水车薪,没办法,又买了一块移动硬盘,网盘用起来还是没有硬盘方便,我使用网盘的频率很低。 MacOS 挂载我觉得移动硬盘买回来,直接插在电...
观察者模式
组件间通信,我会优先使用路由的通信方式(iOS中需要用到 runtime,Android 中需要用到反射和注解),组件之间按照路由协议(类似 url)实现各自的职责即可,组件间的松耦合性增强了软件设计的弹性和高可用性。 路由结合观察者模式,可以让你的组件设计更上一层楼。路由可以解决单向调用的问题,让组件之间无需知道对方是否存在。观察者模式可以让调用者(使用你框架的)可以很方便的知道组件的内部...
macOS 中神秘的 GCC
最近在看人工智能相关的知识,无意中发现了一个巨牛的 人工智能教程,分享一下给大家。 教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点 这里 可以直接看教程。 这个事情,要从编译一个简单的代码开始说起。 gcc 和 g++ 的区别gcc 是 GCC 中的 GUN C Compiler,C 编译器。 g++ 是 GCC 中的 GUN C++ Compi...
SVN 检出文件
需求对于一些大工程, 整个 svn 仓库文件过大(动辄几十个G的都有),不想把整个 checkout 下来,但是又想维持整个目录结构以方便后续使用,那么可以使用 Subversion1.5 之后的 --depth 参数来只 checkout 需要的子目录. 如果只想把 svn 仓库里面某个文件 checkout 到本地, 不想 checkout 整个目录, 如何操作呢? 实施假设需要 che...
Cocoapods: 私有仓库
使用场景在我之前的博客中分享了几篇关于 Cocoapods 的文章(文末有链接),今天分享另外一个主题即如何创建你自己的私有仓库以及如何使用私有仓库。 为什么会有这种需求呢? 开发组内或者公司内,不希望把一些核心的公用代码给到外界使用(不开源),但是这些代码基本很稳定很成熟,可以做成组件给到其他人或者组内使用。 那么,就可以使用 Cocoapods 来创建自己的私有仓库,让大家共享代码,也是...