前言

  以前想获取应用的 .ipa 文件可以从 iTunes 下载,macOS 上的 iTunes 升级成 12.7 后,无法再获得 .ipa 文件, 而iOS 9 后就不能从 iTools 之类的辅助工具中导出 .ipa 文件。

  后面 Apple 官网又提供了一个 12.6.3 的链接
  
  出于好奇心,想试试直接导出.ipa文件,并重签名安装到未越狱的设备上。

阅读更多

前言

  Wifi 信号又不行了,房间的地理位置不好,联通的路由器信号又特别差,根本不能穿墙。好久不写了博客了,一放松就一直不想写。毕竟从善如登,从恶如崩啦。原来做级联的老旧路由器需要复位,再抢救下,看有没有挽救的希望。所以正好把流程简单记录一下,虽然没啥子用。

环境

MERCURY xxx 路由器
macOS Sierra 10.12.6

原理

网上搜了下,就是下面的参考链接,提供了3种方案

  1. WDS 无线桥接
  2. AP (无线交换机) 使用
  3. 搭建新网络 (子网络)

因为没有联通路由器的登陆的用户名密码,就选第 3 种方案

阅读更多

前言

最近发现 Mac 上的 iTunes 中的 AppStore 总是无法访问,出现如下三种错误

  • 400 Bad Request
  • 502
  • Your iTunes Store Session has expired (再次登陆还是报这个错)

阅读更多

导语

 

在上一篇中简单分析了 Weak 属性是如何被存储,获取和销毁的,其中的 SideTable 结构体当做黑盒进行处理。本文尝试对 SideTable 的结构进行一些分析。

观察

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
struct SideTable {
spinlock_t slock;
RefcountMap refcnts;
weak_table_t weak_table;

SideTable() {
memset(&weak_table, 0, sizeof(weak_table));
}

~SideTable() {
_objc_fatal("Do not delete SideTable.");
}

void lock() { slock.lock(); }
void unlock() { slock.unlock(); }
void forceReset() { slock.forceReset(); }

// Address-ordered lock discipline for a pair of side tables.

template<HaveOld, HaveNew>
static void lockTwo(SideTable *lock1, SideTable *lock2);
template<HaveOld, HaveNew>
static void unlockTwo(SideTable *lock1, SideTable *lock2);
};

SideTable 主要分为 3 部分

  • weak_table_t: weak 引用的全局 hash
  • RefcountMap : 引用计数的 hash
  • slock: 保证原子操作的自旋锁

阅读更多

前言

 

OC 中的 weak 属性是怎么实现的,为什么在对象释放后会自动变成 nil?本文对这个问题进行了一点探讨。

环境

 

mac OS Sierra 10.12.4
objc709

参考答案

 

搜索后发现runtime 如何实现 weak 属性给出了一个参考答案。

runtime 对注册的类, 会进行布局,对于 weak 对象会放入一个 hash 表中。 用 weak 指向的对象内存地址作为 key,当此对象的引用计数为 0 的时候会 dealloc,假如 weak 指向的对象内存地址是 a ,那么就会以 a 为键, 在这个 weak 表中搜索,找到所有以 a 为键的 weak 对象,从而设置为 nil

阅读更多

导语

 

  系统的 UIButton 默认状态下的样式是图标在左标题在右,但有时候可能需要不同的排版。当然可以通过继承添加子视图来实现需求,但本文打算通过理解 UIButton 自带的 imageEdgeInsetstitleEdgeInsets 属性实现该功能。

主要内容包含以下两点:

  • 浅析 imageEdgeInsetstitleEdgeInsets 的属性的原理 [个人观点]
  • 简单实现图标在右标题在左,图标在上标题在下。

阅读更多

导语

 

本文目的是实现一个网络请求进度条的动画效果,主要结构分为以下三个部分

  • JAProgressWKWebView : 使用 WKWebView 的场景
  • JAProgressUIWebView : 使用 UIWebView 的场景
  • JAProgressView : 一般情况下使用 NSURLSession 的场景

环境

 

macOS Sierra 10.12.4
Xcode 8.3.2
iPhone 6S (10.1.1)
iPad Mini 2 (8.4)

阅读更多

导语

objc 运行时的最新版本为 709 ,一回生,二回熟,简单的记录一下过程。

环境 & 工具

macOS Sierra 10.12.4
Xcode 8.3.2
objc-709
搭建 objc-706 时的头文件

阅读更多

导语

iOS 8 引入了 Touch ID 认证的方式来解决输入密码的麻烦操作,Swift 最低需要 iOS 8*,因此本文会用 *Swift 来实现 Touch ID 功能

环境

macOS Sierra 10.12.4
Xcode 8.3.1
Swift 3.0
iPhone 6S 10.1.1

Touch ID 需要硬件支持

阅读更多

导语

最近,公司的个人开发者账号需要续费,同事发现他的 VISA 信用卡无法支付。提示你的支付授权失败。请核实你的信息后重试,或试试其他付款方式。我在尝试的时候也报了上面的错误,再次尝试就顺利支付了。搜索后发现原来自 2015年6月1日 起,中国大陆发行的 VISA 单标卡若在中国境内他行的 VISA 外卡收单商户交易,VISA 网络将不能受理。

阅读更多

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×