Nix 的自我修养


  • Home

  • Tags

  • Archives

初识 Reactive Cocoa

Posted on 2016-03-24 | | Visitors:

ReactiveCocoa 是一个符合 FRP(Functional Reactive Programming)范式的,操作和转换数据流的框架。

它可以解决三个问题:

  • 开发过程中关于界面的状态信息太多,不易维护。
  • 统一各种消息传递的方式。
  • 绑定功能可以配合 MVVM 使用。
Read more »

MVVM

Posted on 2016-03-23 | | Visitors:

MVC

I’m dating with a model… and a view, and a controller.

众所周知,MVC 是开发客户端最经典的设计模式,iOS 开发也不例外,但是 MVC 有让人无法忽视的严重问题。

Read more »

iOS 利用 Framework 进行动态更新

Posted on 2015-11-09 | | Visitors:

前言

目前 iOS 上的动态更新方案主要有以下 4 种:

  • HTML 5
  • lua(wax)hotpatch
  • react native
  • framework

前面三种都是通过在应用内搭建一个运行环境来实现动态更新(HTML 5 是原生支持),在用户体验、与系统交互上有一定的限制,对开发者的要求也更高(至少得熟悉 lua 或者 js)。

使用 framework 的方式来更新可以不依赖第三方库,使用原生的 OC/Swift 来开发,体验更好,开发成本也更低。

由于 Apple 不希望开发者绕过 App Store 来更新 app,因此只有对于不需要上架的应用,才能以 framework 的方式实现 app 的更新。

Read more »

iOS 上的坑们

Posted on 2015-09-02 | | Visitors:

怎样不显示 UITableView 末尾的空白行?

1
self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];

Autolayout 如何动画?

1
2
3
4
5
[containerView layoutIfNeeded]; // Ensures that all pending layout operations have been completed
[UIView animateWithDuration:1.0 animations:^{
// Make all constraint changes here
[containerView layoutIfNeeded]; // Forces the layout of the subtree animation block and then captures all of the frame changes
}];
Read more »

TL;DR - 如何提升你的能力?给年轻程序员的几条建议

Posted on 2015-06-23 | | Visitors:

读了一位前辈给年轻人的一点建议以更好地利用时间,最大化长期收益。

Read more »

Autolayout 使用小结

Posted on 2015-06-20 | | Visitors:

Apple 近几年来推出了各种屏幕尺寸的 iPhone、iPad,以前只在 Android 上存在的不同屏幕尺寸的 UI 适配问题在 iOS 上也日益突出。为了解决这个问题,Apple 为开发者提供了 AutoLayout。区别于以往的手动计算 frame 的方式,AutoLayout 让开发者只需要通过设置约束(constraints)来描述需要什么样的布局,而不是如何进行布局。约束是用来描述一个 view 的布局条件或者两个 view 之间布局关系的对象。通过这种方式有效地减少了适配不同屏幕尺寸的工作量。

Read more »

Symbolicate iOS Crash Log

Posted on 2015-04-24 | | Visitors:

本文介绍的是如何处理 Xcode 无法自动 Symbolicate 的 Crash log。

如果你得到这样的 Crash log,你一定想知道其中的 0x4a000 + 37204 究竟对应哪个方法调用。

1
2
3
4
5
6
7
0   CoreFoundation                  0x2dc73f7e __exceptionPreprocess + 126
1 libobjc.A.dylib 0x384eecca objc_exception_throw + 34
2 CoreFoundation 0x2dc77912 -[NSObject(NSObject) doesNotRecognizeSelector:] + 198
3 CoreFoundation 0x2dc761fe ___forwarding___ + 702
4 CoreFoundation 0x2dbc5764 _CF_forwarding_prep_0 + 20
5 YourAppName 0x00053154 0x4a000 + 37204
6 UIKit 0x306f1c52 -[UIApplication _sendWillEnterForegroundCallbacks] + 90
Read more »

Protocol Buffers for iOS

Posted on 2015-03-18 | | Visitors:

Protocol Buffers 是 Google 出品的用来序列化/反序列化数据的工具。原生支持 C++、Java、Python。

如果要在 iOS 上使用 PB,可以直接使用 C++,但是编译过程很麻烦,因此这里使用的是第三方的库。

安装 Protocol Buffers

  • 安装 homebrew
1
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  • 安装 automake、libtool、protobuf。这里安装的 protobuf 是 google 官方版本。
1
2
3
brew install automake
brew install libtool
brew install protobuf
Read more »

简单机械手表原理

Posted on 2015-03-08 | | Visitors:

一直对机械手表内部的结构有些好奇,直到今天看到了一个精美的视频——基础机械表内部工作原理才明白。

Read more »

使用 Developer ID 为 Mac app 签名

Posted on 2015-01-07 | | Visitors:

为何要签名

对 app 进行代码签名可让用户确信它来自已知来源,且自最后一次签名之后未被修改。在您的 Mac app 或 iOS app 可以使用商店服务,安装到 iOS 设备上进行开发或测试,或者提交到 App Store 之前,必须先使用 Apple 颁布的证书对其进行签名。

在 OS X 的安全性与隐私的设置里有一项设置是允许从以下位置下载的应用程序,默认的设置是Mac App Store 和被认可的开发者。

也就是说在用户不手动修改设置的情况下,用户无法打开未签名的程序。

打开未签名程序时的警告

下面就来介绍如何使用 Developer ID 为 app 签名。

注意:本文不适用于发布到 Mac App Store 的签名。

Read more »
1234…6
Nix Wang

Nix Wang

60 posts
28 tags
© 2018 Nix Wang
Powered by Hexo
|
Theme — NexT.Pisces v6.0.3