
iOS之读书笔记
程序员的修养
好好学习
展开
-
Multithreading and memory 读书笔记---_strong修饰词
_strong修饰词 _strong修饰词是默认的修饰词,用于修饰id和对象。 (1)对于变量 id obj =[ [NSObject alloc] init];等价与id _strong obj=[[NSObject alloc] int];而且与非ARC下的 id obj =[ [NSObject alloc] init];相同 (2)对于局部变量来说,下面代码相同ARC下原创 2016-06-26 07:52:57 · 317 阅读 · 0 评论 -
iOS Core Animation---隐式动画
隐式动画这章我们介绍4个内容:事务、完成块、图层行为以及呈现与模型; 其实我们需要掌握的还有隐式动画的实现原理、UIKit怎样禁用了关联图层的隐式动画等等。一、隐式动画的理解 Core Animation基于一个假设,说屏幕上的任何东西都可以(或者可能)做动画。动画并不需要打开,相反需要明确地关闭,否则他会一直存在。当你改变CALayer的一个可做动画的属性,它并不能立刻在屏幕上体现出来。相反,原创 2017-03-27 08:03:02 · 4522 阅读 · 0 评论 -
iOS与OS多线程和内存管理----GCD底层实现
GCD实现 GCD实在内核XNU上实现的,实现Dispatch Queue的软件组建: libdispatch组件,主要提供Dispatch Queue技术; Libc(pthreads)组件,主要提供prhread_workqueue技术; XNU内核,主要提供workqueue技术。我们使用的GCD的API是C语言函数,全部包含在LIBdispatch库中,Dispatch Queue通原创 2017-03-02 15:09:19 · 3280 阅读 · 1 评论 -
iOS与OS多线程和内存管理---GCD的API详解
dispatch_set_target_queue函数(1)介绍 函数原型void dispatch_set_target_queue(dispatch_object_t object, dispatch_queue_t queue);第一个参数:想要改变的对对象(队列),不能为空 第二个参数:对象的目标队列,这个队列被retained,第一个参数的队列如果系统需要可能release,这个参数也原创 2017-03-02 13:58:56 · 1029 阅读 · 0 评论 -
iOS多线程编程和内存管理-----修改Block语法中的值(3)
因为Block语法可以截获自动变量的值,因为在实现上不能修改被截获自动变量的值(因为在block初始化时,自动变量的值保存在block的结构体实例中),所以修改被截获自动变量的值会报编译错误 如果我们要修改Block中的值,或者说在Block中保存值;有两种解决方法 (1)C语言中的静态变量、静态全局变量、全局变量,允许Block修改值 (2)使用__blo原创 2017-03-20 09:41:41 · 517 阅读 · 0 评论 -
iOS多线程编程和内存管理---block截获自动变量的解释(2)
前面已经介绍了block是带有局部变量(自动变量)的匿名函数,那么什么是带有局部变量呢?看看下面的的例子int main(int argc, const char * argv[]) { int dmy = 256; int val = 10; const char *fmt = "val = %d\n"; void(^blk) (void) = ^{printf(fm原创 2017-03-20 08:19:57 · 551 阅读 · 0 评论 -
iOS Core Animation---变换
变换这一章将介绍两个方面的内容:仿射变换、3D变换,然后介绍利用3D变换实现的固体对象1、放射变换 相对于下文的3D变换,仿射变换属于2D变换,函数开头CG意味着使用Core Graphics的API,而且CGAffineTransform仅仅对2D变换有效。(1)介绍 UIView的transform属性是CGAffineTransform类型的,用于在二维空间做旋转、缩放原创 2017-03-26 09:38:40 · 871 阅读 · 0 评论 -
iOS Core Animation--视觉效果
CALayer属性实现的视觉效果–圆角、图层边框、阴影、图层蒙版、拉伸过滤、以及组透明。下面将一一介绍一、圆角 cornerRadius:使用CALayer的cornerRadius属性设置图层的曲率,可以实现圆角;它的默认值是0为直角。 谨记:默认情况下cornerRadius只影响背景颜色而不影响背景图片或子图层。不过设置masksToBounds为yes,图层里面的所有东西都会被原创 2017-03-24 08:45:56 · 513 阅读 · 0 评论 -
iOS Core Animation--寄宿图
一、寄宿图–contents属性 (1) CALayer有一个属性叫contents,contents默认可以传一个id类型的对象,但是只有你传CGImage的时候,它才能够正常显示在屏幕上。所以最终我们的图形渲染落点落在contents身上如图。注意:如果你想将UIImage类型的图赋值给contents,你可以使用下面的方法: layer.contents = (__bridge id)原创 2017-03-24 08:16:11 · 466 阅读 · 0 评论 -
iOS Core Animation笔记--UIView和CALayer
UIViewiOS中所有的视图均是从UIVIew派生的,UIVIew可以处理触摸事件、支持Core Graphics绘图、可以做仿射变换(例如旋转、缩放)、也可以做一些滑动或渐变的动画CALayerCALayer类似UIVIew,也还一些被层级关系树管理的块,CALayer(图层)可以包含图片、文字等内容,可以管理自己的子图层,也有一些方法和属性用来做动画和变换。但是和UIView不同的是,CALa原创 2017-03-24 07:46:02 · 330 阅读 · 0 评论 -
iOS中视图切换的四种方式
iOS中常用的四种视图切换的方式有UITabBarController、UINavigationController、模态窗口以及添加为子视图的方式 一、简单分析一下各自的原理: * UITabBarController:以平行的方式管理视图,各个视图之间往往关系并不大,每个加入到UITabBarController的视图都会进行初始化即使当前不显示在界面上,相对比较占用内存。 * UINa原创 2017-02-09 16:06:41 · 3306 阅读 · 0 评论 -
读书笔记之_weak修饰词
二、 _weak修饰词 因为使用_strong修饰词,易出现循环引用,使用_weak来解决。(1)循环引用的例子--在类中成员变量可能出现的循环引用 @interface Test : NSObject { id _strong obj; } (void)setObject:(id __strong)obj; @end@implementation Test -原创 2016-06-27 07:48:34 · 721 阅读 · 0 评论 -
__unsafe_unretained ownership qualifier
__unsafe_unretained ownership qualifier 1.介绍 _unsafe_unretained修饰的变量不是线程安全的,使用它修饰的任何变量排除在ARC(由编译器执行内存管理),程序员需手动管理。 2.造成悬挂指针 Listing 2–9. _unsafe_unretained qualifier id __unsafe_unretained obj1原创 2016-07-05 19:24:01 · 432 阅读 · 0 评论 -
向类询问问题
class-object 是一个类对象,selector是see类型的值 (1)-(BOOL) isKindOfClass: class-object 判断是否是这个类或者这个类的子类的实例 (2)-(BOOL) isMemberOfClass: class-object 判断是否是这个类的实例 (3)-(BOOL) respondsToSelector: selector 判读实原创 2016-07-13 19:21:26 · 342 阅读 · 0 评论 -
iOS多线程编程和内存管理----Block的实质的研究(1)
block是带有局部变量的匿名函数,在底层是被当做C语言函数在处理的。 具体分析如下int main(int argc, const char * argv[]) { void(^blk) (void) = ^{printf("Block\n");}; blk(); return 0;}上述代码通过clang -rewrite-objc 源文件名 转换成下面源代码str原创 2017-03-19 17:31:51 · 415 阅读 · 0 评论