素墨文胤

一日心靜一日仙、不以神力亂人間


  • Startseite

  • Archiv

OC 和 Swift 的混用方法

Veröffentlicht am 2016-04-16 | Edited on 2018-01-23

  OC 和 Swift 混用就是要让 OC 知道 Swift 的类,和让 Swift 知道 OC 的类。
  Xcode 的 Build Setting 里有一 Swift Compiler - Code Generation 组,里面有两个 Header 的指定:Objective-C Bridging Header 和 Objective-C Generated Interface Header Name,这两个 Header 使得 OC 和 Swift 可以通讯,现分别介绍:

Weiterlesen »

ReactiveCocoa 简单总结

Veröffentlicht am 2016-04-11 | Edited on 2018-01-23

####  ReactiveCocoa 是什么?
  ReactiveCocoa 由 Github的工程师们开发,统一了 Native APP 中事件的等待和响应。

####  基本概念:RACSignal
  ReactiveCocoa 通过对信号(Signal)的订阅(subscribe)、用 Block 来处理事件的等待和响应。信号即被订阅的对象,描述了我们关注的状态的变化。

####  RACSignal 的常用操作与示例
  1、-subscribeNext:订阅下一个信号,信号被订阅后才能起作用。
  2、-map:映射,信号使用前的预处理。
  3、-filter:信号使用前的过滤。

Weiterlesen »

从汉语字面理解 观察者模式 和 订阅者模式 的区别

Veröffentlicht am 2016-04-09 | Edited on 2018-01-23

  很多文章都会将 观察者模式 和 订阅者模式 混为一谈,其实他们两个还是有本质区别的。

  举例来说:
  1、警察与小偷:小偷总是计划着犯罪,警察为了抓到证据(某类信息),不得不在暗处设岗观察,这是观察者模式;
  2、读者与邮局:邮局有报纸订阅服务,于是读者去邮局订阅了报纸(某类信息),这是订阅者模式。

  由上可见两者区别:
  1、订阅者模式下,订阅者被动接受信息、服务提供者主动提供服务;观察者模式下,观察者主动获取信息、被观察者并不知情;
  2、订阅者模式 需要在服务提供者处有订阅者列表,观察者模式 在被观察者处则没有 观察者名单列表;
  3、订阅者模式 有移除订阅者行为,观察者模式 则没有移除观察者行为;

  二者如何实现?
  订阅者模式:服务提供者有订阅者列表,并提供订阅和取消订阅的方法,当有信息变化时及时 推送 给订阅者,订阅者接收到信息;
  观察者模式:观察者主动 轮询 被观察者的静态信息和动态信息;

  结论:
  我们今天经常说的观察者模式,其实是订阅者模式,做的是信息流的推送,而非耗资源的轮询,所以 ReactiveCocoa 里面将变化的处理统一为 subscribeNext 方法,是以记。

让 Sublime Text 支持 JavaScript

Veröffentlicht am 2016-03-30 | Edited on 2018-01-23

  Sublime Text 默认不支持 JavaScript 的运行,可以通过 Mac 内置的 JavaScript 控制台程序进行 Build System 的自定义:
  菜单路径:[Tools]->[Build System]->[New Build System…]
  粘贴以下内容并保存为 JavaScriptCore.sublime-build:

1
2
3
4
{
"cmd": ["/System/Library/Frameworks/JavaScriptCore.framework/Versions/A/Resources/jsc", "$file"],
"selector": "source.js"
}

  选择 [Tools]->[Build System] 里的 JavaScriptCore,就可以 Build 了。
  记得 Build 前先将源码文件保存。

iOS 热修复(HotFix)

Veröffentlicht am 2016-03-29 | Edited on 2018-01-23

  iOS 在发现线上 Bug 后,如果通过发紧急版修复,即便审核加速了一般也要1-2天。这简直太痛苦了。
  有没有“热修复”的方法呢?如果有,我们就可以在发现的第一时间修复bug了。
  可喜的是 bang590 的 JSPatch 已经诞生了,它“使用 JavaScript 调用任何 Objective-C 的原生接口,替换任意 Objective-C 原生方法”。竟然还有人用来进行 “热开发”,不过一般是用来实时修复线上 Bug,并在下一个版本发布的时候将修正代码用原生代码替换。
  使用 JSPatch 需要熟悉 JSPatch Script 语法,当然还有 OC 到 JSPatch 的转换器可用。难点在于JSPatch Script 的语法。
  小团队不建议自己搭建 JSPatch 的服务器,可以使用 JSPatch Platform。

相关资料:
1、JSPatch Platform: http://jspatch.com
2、JSPatch 工程: https://github.com/bang590/JSPatch
3、JSPatch 转换器: https://github.com/bang590/JSPatchConvertor
4、JSPatch 语法及其他资料: https://github.com/bang590/JSPatch/wiki/

iOS CUICatalog: Invalid asset name supplied: (null)

Veröffentlicht am 2016-03-28 | Edited on 2018-01-23

  方法 [UIImage imageNamed:name] 在 name 为 nil 的情况下出现上述提示,
在 name 为 空串 的情况下提示 “iOS CUICatalog: Invalid asset name supplied:”。
  解决方案:新建一个 UIImage 的类目,添加方法 +imageNamed2:

1
2
3
4
5
6
7
+ (UIImage *)imageNamed2:(NSString *)name {
if (name.length == 0) {
return nil;
}else{
return [self imageNamed:name];
}
}

然后将代码中的 +imageNamed: 方法替换为 +imageNamed2: ,以后都用 +imageNamed2: 方法。

Ubuntu14.04搭建VPN服务

Veröffentlicht am 2016-03-25 | Edited on 2018-01-23

Ubuntu14.04搭建VPN服务

  1. 第一步需要安装PPTP,以用来提供VPN服务
    1.1 #apt-get install pptpd
    1.2 如果有问题的话比如提示找不到之类的,apt-get update 一下应该就可以了,然后再来一次就会自动完成安装。

  2. 装好了之后我们需要进行配置一下以让它可以使用
    2.1 #nano /etc/pptpd.conf
    2.1 取消掉以下 2 行的注释:

    2.1.1. localip 192.168.0.1 (192.168.0.1 改成VPS的外网独立IP)
    2.1.2. remoteip 192.168.0.234-238,192.168.0.245 (“192.168.0.234-238,192.168.0.245”改成分配给用户的IP段,例如:10.10.10.100-200) 
    
  3. 然后我们需要分配账号给自己使用
    3.1 #nano /etc/ppp/chap-secrets
    3.2 添加账户,例如:test pptpd “123” *

    格式:用户名(tab键)协议(tab键)“密码”(tab键)*
    PS:密码用引号引起,最后的*号表示允许在任意IP连接到服务
    
  4. 配置 DNS
    4.1 #nano /etc/ppp/pptpd-options
    4.2 找到 ms-dns,取消掉注释
    4.3 修改为当地DNS或谷歌DNS,例如:8.8.8.8,8.8.4.4

  5. 开启内核IP转发
    5.1 #nano /etc/sysctl.conf
    5.2 取消掉 net.ipv4.ip_forward=1 这一行的注释.
    5.3 #sysctl -p 使之生效

  6. 安装iptables,开启NAT转发
    6.1 #apt-get install iptables(如果没有安装iptables)
    6.2 #iptables -t nat -I POSTROUTING -j MASQUERADE (开启nat转发)

  7. 重启服务,让配置生效
    7.1 #service pptpd restart

【总结】虽然可以自己搭建服务器,但是需要注意 ip 被封后的处理。综合下来还是不如直接买大品牌 VPN 合算和好用。

Missing iOS Distribution signing identity for …

Veröffentlicht am 2016-02-17 | Edited on 2018-01-23

  过年回来,发现 Xcode 证书都失效了,提示 Missing iOS Distribution signing identity for …
  解决方案:
  1、下载 AppleWWDRCA.cer,双击导入钥匙串;
  2、打开钥匙串,选择 [ 菜单 - 显示 - 显示已过期的证书 ];
  3、删除 [ 登录 - 证书 ] 下的过期的 Apple Worldwide Developer Relations Certification Authority,别忘了 [ 系统 - 证书 ] 下的也有一个;
  4、收工。

1234…12

梁遜

一日心靜一日仙、不以神力亂人間

90 Artikel
10 Tags
© 2018 梁遜
Erstellt mit Hexo v3.4.4
|
Theme — NexT.Muse v6.2.0