Asingers Blog

Life is struggle

iOS UITextField 常规处理

学习笔记

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { if ([textField.text rangeOfString:@"."].location == NSNotFound) ...

iOS多线程到底不安全在哪里?

线程安全

iOS多线程安全的概念在很多地方都会遇到,为什么不安全,不安全又该怎么去定义,其实是个值得深究的话题。 共享状态,多线程共同访问某个对象的property,在iOS编程里是很普遍的使用场景,我们就从Property的多线程安全说起。 Property 当我们讨论property多线程安全的时候,很多人都知道给property加上atomic attribute之后,可以一定程度的保障多...

气泡图片

给ImageView加Layer

准备一张这种气泡效果的背景图,然后将这个气泡图做成一个layer实例,并且通过contentCenter或者contentRect拉伸至我们需要展示的UIImageView大小 将做好的layer实例赋给UIImageView 将imageview赋上图片 CGRect frame = CGRectMake(20, 100, 300, 300); UIImageView *ima...

使用CIFilter 生成二维码

学习笔记

首先是二维码的生成,使用CIFilter很简单,直接传入生成二维码的字符串即可: - (CIImage *)createQRForString:(NSString *)qrString { NSData *stringData = [qrString dataUsingEncoding:NSUTF8StringEncoding]; // 创建filter CIFilter *qrFilte...

iOS RunLoop

用实例理解 RunLoop

首先来看看定义 什么是RunLoop? 提到RunLoop,我们一般都会提到线程,这是为什么呢?先来看下官方对RunLoop的定义:RunLoop系统中和线程相关的基础架构的组成部分(和线程相关),一个RunLoop是一个事件处理环,系统利用这个事件处理环来安排事务,协调输入的各种事件。 RunLoop的目的是让你的线程在有工作的时候忙碌,没有工作的时候休眠(和线程相关)。可能这样说你还不是...

开发者所需要知道的 iOS 10 SDK 新特性

学习笔记

总览 距离 iPhone 横空出世已经过去了 9 个年头,iOS 的版本号也跨入了两位数。在我们回顾过去四五年 iOS 系统的发展的时候,不免感叹变化速度之快,迭代周期之短。iOS 7翻天覆地的全新设计,iOS 8中 Size Classes 的出现,应用扩展,以及 Cloud Kit 的加入,iOS 9里的分屏多任务特性等等。Apple 近年都是在 WWDC 发布新的系统和软件,然后...