WWDC 2017-412: Auto Layout Techniques in Interface Builder

Here’s a summary for WWDC 2017, Session 412: Auto Layout Techniques in Interface Builder
https://developer.apple.com/videos/play/wwdc2017/412/

阅读全文

iOS的内存管理之ARC部分总结

在《Objective-C高级编程:iOS与OS X多线程和内存管理》一书中,对于ARC的部分有详尽的讲解。我将这一部分整理成思维导图,算是一个归档吧。

阅读全文

关于copy的常见问题

1.@property中的copy关键字如何使用?

  • 对于NSStringNSArrayNSDictionary而言:见下面几个问题的回答。
  • 对于block而言:需要使用copy是为了在原有上下文范围外,继续追踪它捕获的状态。在使用ARC的时候不需要担心这个问题,因为是自动进行的,但是最佳实践是为property属性标记上这个必然的行为(即,添加上copy关键字)。

阅读全文

Issue of lazy loading property

I’ve got some readonly properties in my .h file. And when I tried to lazy loading them as usual like this.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// MyView.h
@property (nonatomic, strong, readonly) UIImageView *imageView;
// MyView.m
- (UIImageView *)imageView
{
if (!_imageView)
{
_imageView = [UIImageView new];
_imageView.translatesAutoresizingMaskIntoConstraints = NO;
_imageView.backgroundColor = [UIColor clearColor];
_imageView.contentMode = UIViewContentModeScaleAspectFit;
_imageView.userInteractionEnabled = NO;
_imageView.accessibilityIdentifier = @"empty set image view";
_imageView.image = _defaultImage;
[_contentView addSubview:_imageView];
}
return _imageView;
}

阅读全文

KVO & KVC 知识点小结

1.KVO

1.1 属性依赖的机制

在objc.io讲解KVC和KVO的一篇文章中,举了一个体现属性依赖机制的例子,例子的逻辑结构如下图。完整代码见github

阅读全文

随笔一则-0422-美团沙龙面基

一个兴起参加了美团周末的技术沙龙,技术上的收获不敢说有多少,感想倒是有一些。

所谓长见识,无非是“走出去”和“走进来”

做小app做惯了,难免井底观天,不知移动开发的深浅了。只有当面向用户量数以万计、十万、百万的app时,一些宏观的问题才会浮出水面。比如说系统模块化的分割,比如说代码的多端复用,比如说性能监控方案。往大了说,这应该是应用系统普遍会遇到的问题,而不仅仅是移动端;往小了说,一个简单的app,如果想从这些方面进行优化,也是需要费一些心思的。

阅读全文

WebSocket初探

1.基础概要

应用层,主要解决如何包装数据:HTTP、FTP、Telnet等。其中,HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。所以是短连接。相对而言,socket连接是长连接,两端一旦建立连接将不会主动断掉。但由于各种环境因素可能会断开,所以当一个socket连接中没有数据传输时,为了维持连接需要发送心跳消息
传输层,主要解决数据如何在网络中传输:TCP协议。
网络层,主要解决数据如何在网络中传输:IP协议。

阅读全文

Regex Notes

Some definitions before we start:

  • literal: A literal is any character we use in a search or matching expression, for example, to find ind in w ind ows the ind is a literal string - each character plays a part in the search, it is literally the string we want to find.

阅读全文

CAS登录之iOS端总结

CAS(集中式认证服务,Central Authentication Service)登录在后台开发中使用很广泛,它可以允许一个用户访问多个web app,而只需要提供一次凭证(如用户名和密码)。不仅方便用户跨程序使用系统,也实现了认证和web app分类,提高了安全性。

目前在移动端(本文以iOS为例)涉及到CAS登录的项目主要有两种实现方式:CAS模拟登录和RESTful方式的登录。现总结如下,供以后备查。

阅读全文