ios开发
文章平均质量分 87
Q52077987
这个作者很懒,什么都没留下…
展开
-
Run Loops 阅读笔记
run loop是一个事件处理循环,可以向其添加自己的事件也可以接受系统的事件。run loop在没有事件的时候让线程睡眠。 每个线程都有自己的run loop,所以不需要自己创建,但是非主线程的run loop需要手动run起来。 run loop接受两种类型的源,input source和timer source。 run loop会发送通知,通过注册观察这些通知可以了解run loop...原创 2018-06-07 14:24:24 · 308 阅读 · 0 评论 -
iOS copy那些事儿
自定义对象copycopy是NSObject定义的一个方法,任何继承自NSObject的类实例都可以调用这个方法,但是前提是实现了copyWithZone:方法,因为copy会调用这个方法,如果没有实现,将引起Crash。- (id)copyWithZone:(NSZone *)zone; The returned object is implicitly retained by...原创 2018-08-22 14:26:31 · 297 阅读 · 0 评论 -
iOS 线程同步几种方式
多线程同步目的有以下几个方面:第一,对一段代码的执行进行保护,如果同时执行一段代码,中间的临时变量可能会互相干扰造成结果不对;第二,对资源的保护,多个线程执行不同的代码,但是可能涉及同一个资源;第三,消息传递,一个线程通知另外一个线程发生了一件事。iOS中常用线程同步方式:NSLock一个封装了pthread_mutex的OC对象,常用于保护一个代码块,如果NSLock对象已经被loc...原创 2018-08-28 13:38:56 · 2958 阅读 · 0 评论 -
iOS 消息机制——基于官方文档的笔记
动态绑定在OC中,一个调用一个对象的方法被叫做发送消息。[receiver message],就是给receiver发送message的消息。为什么这么说呢,因为OC在编译的时候没有决定调用的message方法就是receiver实现的message方法,receiver可能没有实现自己的message方法,也可能receiver得实际类型也不是声明的类型,可能是子类,也可能仅仅是实现了一个协...原创 2018-08-24 10:58:32 · 349 阅读 · 0 评论 -
iOS App Life Circle
一个iOS App有以下五个状态: 需要注意的是Inactive 状态,常常被忽略,App被切换到后台时,并不是直接进入Background状态,而是有一个Inactive状态,同样一个App启动后,也要经过Inactive状态过渡。系统状态的转换不能通过代码控制,只能通过用户操作由iOS系统控制。但是可以通过代码在状态转换的时候获取回调消息。这些回调函数都在AppDelegate中。...原创 2018-09-13 15:23:25 · 597 阅读 · 0 评论 -
iOS App后台任务
Background Task因为iOS程序切换到后台之后,很有可能被系统杀掉,因此切换到后台的时候需要保存重要数据。UIApplication的这个方法能让系统给App一段时间,执行重要任务。beginBackgroundTaskWithName:expirationHandler:系统给了多少时间呢?可以用backgroundTimeRemaining API查看。如果超时,expir...原创 2018-09-19 10:36:09 · 1625 阅读 · 0 评论 -
iOS中的搜索
NSUserActivityNSUserActivity主要用于HandOff,简单说就是切换设备能接着做之前的事情,比如在手机浏览网页,打开Mac可以直接打开手机浏览的那个网页并且停留在阅读位置。因此NSUserActivity主要是用来记录应用程序当前状态的。在iOS9以后也支持在Spotlight中搜索。如果纯粹想索引一些内容,还是应该使用Core Spotlig。稍后会给出二者的比较。...原创 2018-09-24 10:57:21 · 814 阅读 · 0 评论 -
Effective Objective-C 2.0 笔记 (一)
Effective Objective-C 2.0 笔记 (一)第1条 了解Objective-C语言起源这一章先是澄清了OC的消息机制和函数调用机制的区别。C++的函数调用机制在涉及到多态的时候也是动态绑定的,而OC只是普通的函数调用也是动态绑定的,也就是运行时查找应该执行的函数指针。接着介绍了OC中的对象都是保存在堆上的,非对象类型都是保存在栈上的。第2条 在类的头文件中尽量少引入其他...原创 2018-09-29 10:16:02 · 565 阅读 · 0 评论 -
Effective Objective-C 2.0 笔记 (二)
第15条 用前缀避免命名空间冲突最好遵循苹果的编程规范,使用 3个字的前缀。对于全局的变量,常量以及C函数,也应该加上前缀。第16条 提供“全能初始化方法“这种编程模式就是定义一个参数最全的初始化方法,在其中初始化所有的成员变量,其余的初始化方法都调用这个初始化方法。目的是确保所有的成员变量都已经初始化,所有必要的过程都已经调用。下边是书上的例子:@implementation EOC...原创 2018-10-08 13:08:19 · 345 阅读 · 0 评论 -
导航控制器以及导航栏学习笔记
UINavigationViewController使用苹果官方网站的架构图: UINavigationViewController(下边简称UINaviVC)整体功能由3部分组成:UINaviVC本身, Bars(navigationBar,toolBar)和ViewControllers。UINaviVC作为管理者负责ViewController和Bar的交互。具体说来就是UINaviVC从它原创 2018-01-15 11:43:04 · 525 阅读 · 0 评论 -
Swift4 学习笔记——高级篇
Swift4 学习笔记——高级篇原创 2017-12-07 15:57:34 · 3751 阅读 · 0 评论 -
WKWebView 和本地代码交互方式
从iOS 8.0开始,应该使用WKWebView。消息交互WKWebView和本地程序的交互有3种方式:第一种在WebView内容的特定加载阶段执行一段JS。 在WKWebView的configuration的usercontentController中添加一个WKUserScript。使用WKUserContentController的addUserScript方法,这个方原创 2017-08-01 12:38:45 · 703 阅读 · 0 评论 -
__bridge, __bridge_transfer和__bridge_retained 的使用
Core Foundateion是C语言的接口,Foundation是OC的接口,有ARC来管理内存,Core Foundation需要自己管理内存。 涉及到Core Foundation的结构体转化到Foundation的对象或者反过来的时候,需要用到上述3个关键字。__bridge,CF和OC对象转化时,只涉及对象类型转化,不涉及所有权的转化。 讲一个OC对象转化成一个CF对象的时候,使用_原创 2017-07-24 14:41:04 · 442 阅读 · 0 评论 -
Objective-C Runtime
由消息发送开始: [receiver message]在编译的时候会被转化为objc_msgSend(receiver, selector)。objc_msgSend的签名是:objc_msgSend(id self, SEL op, …)对象模型id是什么?typedef struct objc_object *id;struct objc_object{ Class isa };typed原创 2017-07-25 15:37:56 · 502 阅读 · 0 评论 -
Auto Layout
Auto Layout是iOS 6以后Apple提供的布局界面的新方法,用来简化界面布局的代码。本质上,界面布局都是确定下每一个View的位置和大小。传统的手写代码布局有两种方式,一种是根据不同的屏幕大小,加载不同常数。这种方式只适用于静态布局,View的大小一开始就确定了,或者说View的大小和变化一开始就能预料到。另外一种就是考虑View的位置关系,只用极少的几个常数确定一个或者几个View的位原创 2017-07-25 16:00:19 · 492 阅读 · 0 评论 -
MJRefresh源码阅读
使用MJRefresh的使用很简单,引入MJRefresh.h头文件,然后创建header或者footer赋值给tableView或者collectionView的mj_header或者mj_footer属性。设置好block或者target-action的回调就可以了。接口也非常简单,如果没有特殊要求,提供的默认的样式已经很好了。同时MJRefresh内置的几个header和footer可以定制不原创 2017-08-12 17:42:00 · 874 阅读 · 0 评论 -
Universe Link 接入
创建配置文件创建一个配置文件,名字叫做apple-app-site-association(不能改,没有后缀名),放在你的网站的根路径或者.well-known路径下。配置文件的内容如下:{原创 2017-09-15 16:00:33 · 2879 阅读 · 0 评论 -
Core Audio Overview
Core Audio翻译 2017-11-03 16:45:03 · 755 阅读 · 0 评论 -
Swift4 学习笔记——基础篇
Swift 4.0 学习笔记原创 2017-12-01 16:20:33 · 4620 阅读 · 0 评论 -
Effective Objective-C 2.0 笔记(三)
第37条 理解“块”这一概念block也是对象,也有引用计数,因此要避免循环引用,一个比较隐蔽的循环引用的例子是:-(void)anInstanceMenthod{ void (^someBlock)() = ^{ _anInstanceVar = @"something"; //... }}注意,通过下划线使用类的成员也会捕获self对象...原创 2018-10-17 13:44:25 · 316 阅读 · 0 评论