goipip全球账号

账号购买网址:goipip.cn~出售全球账号.海外电话卡.微信:goipip360

KVO详解

KVO底层原理及其实现

前言 作为一名iOS开发者,最近面试被问到了KVO的问题。其实KVO的原理以及runtiem的知识,很早之前就有学习和使用了,但是实现的细节都忘记差不多了,故再此重新梳理一下。 正文 NSKeyValueObserving ,一种非正式协议,通知其他对象的指定属性发生了改变。 简单理解就是,监听一个对象的某个属性是否发生改变。 KVO的使用 监听某个对象的某个属性 - ...

ARC 与 MRC 混合使用

MRC 库的处理

Xcode 项目中我们可以使用 ARC 和非 ARC 的混合模式。 有些时候我们工程中引用了十分古老的库为MRC模式,这时就需要采用混合模式进行处理 如果你的项目使用的 MRC 模式,要为 ARC 模式的代码文件加入 -fobjc-arc 标签。 如果你的项目使用的是 ARC 模式,要为 MRC 代码文件加入 -fno-objc-arc 标签 ...

OC 内存管理的基本概念

OC 内存管理的基本概念以及应用

OC 内存管理的基本概念 ###1. 内存管理的基本概念 栈区 stack 堆区 heap heap(堆)是最自由的一种内存,它完全由程序来负责内存的管理,包括什么时候申请,什么时候释放,而且对它的使用也没有什么大小的限制。在C/C++中,用alloc系统函数和new申请的内存都存在于heap段中。 BSS区 来...

5分钟带你看完 WWDC 2018

WWDC 2018 Keynote 全记录

前言 一年一度的 WWDC(苹果全球开发者大会)于北京时间 6月5日 凌晨1点开幕。废话不多说,来看看这次WWDC 都有哪些亮点吧! iOS 12 和 ARKit 2.0 关键词:官方防沉迷最为致命 iOS 12 iOS 12 相较于 iOS 11 并没有太多UI上的变动,刚更新完 bate 版本的 iOS 12,完全感觉不到这是个新系统。 iOS 12 主要是对安全和性...

Xcode命令行工具管理

如何切换Xcode命令行工具

安装 xcode-select --install Xcode版本切换 显示当前使用的xocde版本 $ xcode-select --print-path 选择Xcode中的默认版本 $ sudo xcode-select -switch /Applications/Xcode.app

柔术最大的谎言「译」

辩证分析柔术中技术与力量

译自 《THE BIGGEST LIE IN JIU JITSU》 最近我看到了一个让我捧腹的柔术笑话。 “柔术的技术是无敌的!” 你可能不想听听下面的内容,但是作为一名柔术教练,我的工作是与你分享我认为的真理,而不是虚假的谎言。所以在这里与你们分享我的见解: 目录 技术不是无敌的 我的见解 一个假设 真实的例子 这个神话是从哪里来的? 好消息...

从一道网易面试题浅谈 Tagged Pointer

浅谈 Tagged Pointer

前言 这篇博客九月就想写了,因为赶项目拖了到现在,抓住17年尾巴写吧~ 正文 上次看了一篇 《从一道网易面试题浅谈OC线程安全》 的博客,主要内容是: 作者去网易面试,面试官出了一道面试题:下面代码会发生什么问题? @property (nonatomic, strong) NSString *target; //.... dispatch_queue_t queue = disp...

为博客添加 Gitalk 评论插件

BY Blog 添加 Gitalk 的评论插件了

前言 由于 Disqus 对于国内网路的支持十分糟糕,很多人反映 Disqus 评论插件一直加载不出来。而我一直是处于翻墙状态的~(话说你们做程序员的都不翻墙用Google的吗😅,哈哈,吐嘈下) 针对这个问题,我添加了Gitalk 评论插件。在此,非常感谢 @FeDemo 的推荐 。 正文 Gitalk 评论插件 首先来看看 Gitalk 的界面和功能: gitalk 使用 ...

GCD 在 Swift 中的用法

DispatchQueue Swift 中,对 GCD 语法进行了彻底改写。引入了 DispatchQueue 这个类。 先来看看在一个异步队列中读取数据, 然后再返回主线程更新 UI, 这种操作在新的 Swift 语法中是这样的: DispatchQueue.global().async { DispatchQueue.main.async { // 更新UI操作 ...

Swift 4 新特性

很高兴 Swift 4 不再是一门新语言了😅

private 权限扩大 在 Swift 4 中,extension 可以读取 private 变量了。 Swift 3 中,如果将主体函数的变量定义为 private,则其 extension 无法读取此变量,必须将其改为 filePrivate 才可以。 单向区间 单向区间是一个新的类型,主要分两种:确定上限和确定下限的区间。直接用字面量定义大概可以写成 …6和 2… 例如 ...

利用 Debug Memory Graph 检测内测泄漏

利用 Xcode 内存表(Debug Memory Graph)检测内测泄漏

前言 平常我们都会用 Instrument 的 Leaks / Allocations 或其他一些开源库进行内存泄露的排查,但它们都存在各种问题和不便, 在这个 ARC 时代更常见的内存泄露是循环引用导致的 Abandoned memory,Leaks 工具查不出这类内存泄露,应用有限。 今天介绍一种简单直接的检测内测泄漏的方法:Debug Memory Graph 就是这货: ...

iTunes Connect 构建版本不显示

App打包上传到 App Store, iTunes Connect 构建版本不显示

前言 今天新项目上架,在Xcode打包上传到App Store后,在iTunes Connect构建版本中居然找不到上传的App… 解决 从iOS10开始,苹果更加注重对用于隐私的保护,App 里边如果需要访问用户隐私,必须要做描述,所以要在 plist 文件中添加描述。 而这三个基础描述是必须添加的: 麦克风权限:Privacy - Microphone Usag...

Swift的HMAC和SHA1加密

swift中利用HMAC的SHA1对文本进行加密

HMAC是密钥相关的哈希运算消息认证码(Hash-based Message Authentication Code)。 HMAC运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。也就是说HMAC通过将哈希算法(SHA1, MD5)与密钥进行计算生成摘要。 Objectice-C 在上个 Objectice-C 项目中,使用的 HMAC 和 SHA1 进行加...

「体能训练理论」之金字塔

「健身先健脑」科学的运动需要科学的运动理论

引言 体能,人体基础运动能力的统称,人体的本质属性,它支撑着日常生活工作的需要,也支撑着运动技战术的表现。 体能思路,是指导我们设计实施体能训练的思维方式,分析逻辑。它包括回归原点的 五大运动素质 & 动力链理论,也包括在过程中引领方向的 功能性原则 和 金字塔 。 金字塔 体能训练是一门实践科学,实践先于理论,而理论印证实践。体能训练有四大基础学科,分别是运动解剖学、运动生理...

「体能训练理论」之动力链

「健身先健脑」科学的运动需要科学的运动理论

引言 与其说体能训练是一种行为,不如说体能训练是一种程序。只要符合逻辑,就可以自由组合。 那么体能训练的逻辑是什么?我们将之总结为:动力链、功能性、金字塔。 动力链 如果说 五大运动素质(力量、速度、耐力、灵敏、柔韧)代表了体能的宏观表现,那么动力链理论则阐释了人体解剖结构在运动中的客观规律,这二者同为人体的本质属性。 动力链这一理论早在1875年就被提出过,当时的定义还很简单,就...

「体能训练理论」之功能性

「健身先健脑」科学的运动需要科学的运动理论

引言 体能训练是一种开源的程序它所依仗的并不是固有的方法手段,而是能够贯穿始终的逻辑,它是一种指导实践的思维方式,我们管它叫“体能思路”。 体能思路有两个方向,一个是原点,一个是过程。所谓原点我们认为是人体的本质属性,比如之前我们分享的五大运动素质以及动力链理论。所谓过程是我们分析问题实现目的的思考方向以及逻辑,它主要体现在接下来要跟大家分享的功能性原则和金字塔。 今天先来说功能性原则...

Xcode9 无线调试功能

zsh的快速配置

支持:Xcode 9 及 iOS 11 使用数据线连接 iPhone 到电 Mac,Mac 和 iPhone 必须在同一个局域网 1. 打开设备列表 使用快捷键盘 ⇧⌘2 或 在 Xcode 菜单栏选择 Window > Devices and Simulators,打开设备列表 2. 勾选在线调试按钮 3. 拔掉数据线 这时就可以无线调试了。

快速配置zsh

zsh的快速配置

比较水的 Personal Notes 查看你的系统有几种shell cat /etc/shells 显示 /bin/bash /bin/csh /bin/ksh /bin/sh /bin/tcsh /bin/zsh 安装 oh my zsh git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-...

在 Swift 中使用 IBInspectable

IBInspectable 在 Swift 中的实际应用

本文首次发布于 BY Blog, 作者 @柏荧(BY) ,转载请保留原文链接. 前言 通过 IB 设置 控件 的属性非常的方便。 但是缺点也很明显,那就是有一些属性没有暴露在 IB 的设置面板中。这时候就要使用 @IBInspectable 在 IB 面板中添加这些没有的属性。 关于在 OC 中使用 IBInspectable 可以看一下我的 这篇文章 正文 在项目中...

R.swift 的使用

在项目中引入 R.swift,更安全的获取资源

本文首次发布于 BY Blog, 作者 @柏荧(BY) ,转载请保留原文链接. 什么是 R.swift 介绍 R.swift 前,我们先看看 R.swift 能做什么 通常,我们是基于 字符串 来获取资源,例如:图片、xib、或者是 segue let myImage = UIImage(named: "myImage") let myViewController = R.s...