自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

CuiAnkly的博客

自己选择的路,爬着也要走完!

  • 博客(42)
  • 收藏
  • 关注

原创 Xcode8 及iOS10适配问题汇总

1.Notification(通知)自从Notification被引入之后,苹果就不断的更新优化,但这些更新优化只是小打小闹,直至现在iOS 10开始真正的进行大改重构,这让开发者也体会到UserNotifications的易用,功能也变得非常强大。iOS 9 以前的通知1.在调用方法时,有些方法让人很难区分,容易写错方法,这让开发者有时候很苦恼。2.应用在运行时和非运行时捕获通知的路径还不一致。3

2016-09-21 07:34:49 4746 5

原创 iOS开发 Xcode8 如何适配iOS10

1.Notification(通知) 自从Notification被引入之后,苹果就不断的更新优化,但这些更新优化只是小打小闹,直至现在iOS 10开始真正的进行大改重构,这让开发者也体会到UserNotifications的易用,功能也变得非常强大。iOS 9 以前的通知1.在调用方法时,有些方法让人很难区分,容易写错方法,这让开发者有时候很苦恼。2.应用在运行时和非运行时捕获通知的路径还不一致

2016-09-20 23:35:20 3131

原创 iOS 运行时应用

一、什么是运行时(Runtime)?运行时是苹果提供的纯C语言的开发库(运行时是开发中经常用到的底层技术) 二、运行时的作用?能获得某个类的所有成员变量 能获得某个类的所有属性 能获得某个类的所有方法 交换方法实现 能动态添加一个成员变量 能动态添加一个属性 能动态添加一个方法 三、案例:运行时获取成员变量名称1、分析#import <Foundation/Foundation.h

2016-07-02 10:57:05 3565

原创 iOS - 定时器

1、初始化+ (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInt

2016-05-07 12:46:55 1508

原创 iOS单元测试

由于只是一些简单实用的东西,学学还是挺不错的。其实单元测试用的好,开发起来也会快很多。单元测试对于我目前来说,就是为了方便测试一些功能是否正常运行,还有调试接口是否能正常使用。有时候你可能是为了测试某一个网络接口,然后每次都重新启动并且经过很多操作之后才测试到了那个网络接口。如果使用了单元测试,就可以直接测试那个方法,相对方便很多。 比如由于修改较多,我们想测试一下分享功能是否正常,这时候就有用了

2016-04-19 19:52:40 1689

原创 iOS开发之WKWebView代替UIWebView

Xcode8发布以后,编译器开始不支持IOS7,所以很多应用在适配IOS10之后都不在适配IOS7了,其中包括了很多大公司,网易新闻,滴滴出行等。因此,我们公司的应用也打算淘汰IOS7。 支持到IOS8,第一个要改的自然是用WKWebView替换原来的UIWebView。WKWebView有很多明显优势:1,更多的支持HTML5的特性2,官方宣称的高达60fps的滚动刷新率以及内置手势3,将UIW

2017-04-18 18:01:11 1529

原创 不可变数组NSArray与可变数组NSMutableArray

不可变数组NSArray//创建一个空数组NSArray *array = [NSArray array];//这样创建是没有意义的.//创建只有一个元素的数组NSArray *array1 = [NSArray arrayWithArray:@"a"];NSArray *array2 = [NSArray arrayWithObject:@"b"];//使用便利构造器创建有多个元素数组N

2017-04-18 09:36:53 386

原创 iOS ---GCD 总结篇章

对初学者来说,GCD似乎是一道迈不过去的坎,很多人在同步、异步、串行、并行和死锁这几个名词的漩涡中渐渐放弃治疗。本文将使用图文表并茂的方式给大家形象地解释其中的原理和规律。 首先:什么是多线程? 1个进程中可以开启多条线程,每条线程可以并行(同时)执行不同的任务 比如:进程 ->车间,线程->车间工人 多线程技术可以提高程序的执行效率 比如同时开启3条线程分别下载3个文件(分别是文件A、文

2017-03-23 08:08:42 390 1

原创 IOS UIAlertController 弹框 (ios 9.0 后代替了UIAlertView弹框 和 UIActionSheet下弹框)

在IOS 9.0 后 苹果官方宣布不再或不推荐使用UIAlertView 和 UIActionSheet 由UIAlertController进行代替两者 用控制器将两者合二为一 很简单 方便 下面就是关于UIAlertView的常用方法一)新旧对比: 标准的Alert样式: 旧方法:UIAlertView:UIAlertView *alertView = [[UIAlertView all

2016-10-24 17:05:45 559

原创 http请求状态码和请求信息的含义

HTTP参考一、HTTP码应码 响应码由三位十进制数字组成,它们出现在由HTTP服务器发送的响应的第一行。响应码分五种类型,由它们的第一位数字表示: 1.1xx:信息,请求收到,继续处理 2.2xx:成功,行为被成功地接受、理解和采纳 3.3xx:重定向,为了完成请求,必须进一步执行的动作 4.4xx:客户端错误,请求包含语法错误或者请求无法实现 5.5xx:服务器错误,服务器不能实现一

2016-09-07 00:32:49 527

原创 Container View Controller

一.UIViewController 做iOS开发的经常会和UIViewController打交道,从类名可知UIViewController属于MVC模型中的C(Controller),说的更具体点它是一个视图控制器,管理着一个视图(view)。 UIViewController的view是lazy loading的,当你访问其view属性的时候,view会从xib文件载入或者通过代码创建(覆

2016-09-07 00:28:44 333

原创 iOS- 延迟1秒执行一个函数

本文列举了四种延时执行某函数的方法及其一些区别。 假如延时1秒时间执行下面的方法。 - (void)delayMethod { NSLog(@”execute”); } 1.performSelector方法[self performSelector:@selector(delayMethod) withObject:nil afterDelay:1.0f]; 此方式要求必须在主线程中执行,

2016-09-06 20:50:07 10758

原创 iOS - 保存自定义对象(姓名,性别.....)

我是将聊天记录存到本地,里边用到了自定义的对象,把数据转成Data格式存到本地,在转Data格式的时候报错了,这时候需要先将自定义对象进行归档才可以转Data格式。方法如下:一、在.h文件中声明协议#import <Foundation/fountion.h>@interface Person : NSObject <NSCoding>@property (nonatomic,copy) NSSt

2016-09-06 20:46:43 904

原创 IOS MJRefresh给tableview下拉刷新上拉加载分页

(void)viewDidLoad{[super viewDidLoad];//获取数据[self firstLoadRefresData];//下拉刷新self.refreshControl = [[UIRefreshControl alloc]init];self.refreshControl.tintColor=[UIColor blueColor];[self.refreshControl

2016-09-06 20:27:29 3949

原创 MJRefresh的使用

MJRefresh框架与UIScrollView、UITableView、UICollectionView、UIWebView完美结合 cocoapods导入:pod ‘MJRefresh’ 手动导入: 将MJRefresh文件夹中的所有文件拽入项目中 导入主头文件:#import “MJRefresh.h” Base

2016-08-29 19:00:05 615

原创 关于ios的性能优化

用ARC管理内存ARC(Automatic ReferenceCounting, 自动引用计数)和iOS5一起发布,它避免了最常见的也就是经常是由于我们忘记释放内存所造成的内存泄露。它自动为你管理retain和release的过程,所以你就不必去手动干预了。忘掉代码段结尾的release简直像记得吃饭一样简单。而ARC会自动在底层为你做这些工作。除了帮你避免内存泄露,ARC还可以帮你提高性能,它能

2016-08-29 18:49:04 369

原创 栈区,堆区,全局区,文字常量区,程序代码区 详解

一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两回事,分配方式倒是类似

2016-08-10 19:13:13 409

原创 IOS 多线程,线程同步的三种方式

本文主要是讲述 IOS 多线程,线程同步的三种方式,更多IOS技术知识,请登陆疯狂软件教育官网。   一般情况下我们使用线程,在多个线程共同访问同一块资源。为保护线程资源的安全和线程访问的正确性。   在IOS中我们一般情况下使用以下三种线程同步代码方式:   第一种和第二种代码同步的使用方法,一般情况下我们只需要使用NSLock和NSCondition申明2个属性。然后给此属   性赋对应

2016-07-27 10:28:57 1072

原创 ios多线程开发的常用三种方式

1.NSThread2.NSOperationQueue3.GCDNSThread:创建方式主要有两种:[NSThread detachNewThreadSelector:@selector(myThreadMainMethod:) toTarget:self withObject:nil];和NSThread* myThread = [[NSThread alloc] initWithTarg

2016-07-27 10:26:19 433

原创 自动释放池什么时候创建,什么时候销毁?

自动释放池什么时候创建,什么时候销毁? 运行循环结束前会释放自动释放池,还有就是池子满了,也会销毁。 面试题 下面代码存在内存问题么?如果存在如何解决?为什么-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { int lagerNum = 1024 * 1024 * 2 ; for(int i

2016-07-26 19:57:07 1461

原创 HTTP、Socket与TCP

HTTP、Socket、TCP这三个概念在网络开发中经常被提及,也是比较容易被混淆的概念,这三者在TCP/IP协议族中的位置关系: 三者的位置关系.png 其中,HTTP是应用层的协议,也是开发中最常用的一个网络协议;TCP是传输层的协议,大学学过计算机网络的都知道,该层还有一个UDP协议;而Socket是从传输层上抽象出来的,采用IP地址加端口号的形式来标识,并不是传统意义上的网络协议,所以从

2016-07-23 15:13:38 380

原创 基于SQLite3轻量级封装,一行代码实现增删改查

最近写的项目中有用到数据库,写了不少蛋疼的sql语句,每次都是好几行代码,而且每次都是重复的没有一点技术含量的代码,虽然也有不少基于sqlite的封装,不过用起来还是感觉不够面向对象! 为了不再写重复的代码,花了几天时间,基于SQLite3简单封装了下,实现了一行代码解决增删改查等常用的功能!并没有太过高深的知识,主要用了runtime和KVC:首先我们创建个大家都熟悉的Person类,并声明两个

2016-07-23 15:10:31 1085

原创 IOS 本地和远程推送通知详解

这里主要详细介绍苹果的远程推送服务,在本文后会有本地通知的简单示例。 一,IOS远程通知服务APNs 苹果的APNs(苹果推送通知服务Apple Push Notification server)允许设备和苹果的推送通知服务器保持链接,支持开发者推送消息到给用户设备对应的应用程序。 苹果的APNs基本原理是: 首先由应用注册远程通知。注册成功之后APNs会返回一个唯一标示的设备令牌码devi

2016-07-22 09:47:24 1636

原创 iOS--多线程具体总结(OC&Swift)

整理一下 iOS 开发中几种多线程方案,以及其使用方法和注意事项。当然也会给出几种多线程的案例,在实际使用中感受它们的区别。使用 Swift 和 Objective-C 两种语言讲解在 iOS 中其实目前有 4 套多线程方案,他们分别是:1,Pthreads 2,NSThread 3,GCD 4,NSOperation & NSOperationQueuePthreadsPOSIX线程(POS

2016-07-22 09:42:30 1146

原创 objc runtime 动态增加属性

objective-c中,有类别可以在不修改源码的基础上增加方法;近排在看别人的开源代码时,发现还可以动态增加属性。而且是在运行时使用运行时库,必须要先引入 objc/runtime.h可以使用的函数如下:OBJC_EXPORT void objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPo

2016-07-02 10:48:03 353

原创 iOS开发多线程篇—线程间的通信

一、简单说明 线程间通信:在1个进程中,线程往往不是孤立存在的,多个线程之间需要经常进行通信线程间通信的体现 1个线程传递数据给另1个线程 在1个线程中执行完特定任务后,转到另1个线程继续执行任务线程间通信常用方法- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)w

2016-05-09 12:52:02 1177

原创 UITableView总结

1.协议介绍 UITableViewDataSource(11) UITableViewDelegate(常用) 2.刷新 下拉刷新: 上拉刷新 3.搜索 4.重用 自定义cell 不使用重用方法 注册Cell 5.编辑 滑动更多 6.优化 UITableView 总结UITableView是UIScrollView的子类,因此它可以自动响应滚动事件(一般为上下滚动)。

2016-04-26 13:39:25 415

原创 AFN应用及原理

AFN框架 注意事项 AFN的请求默认的发送的是二进制, AFN的响应默认的接收的是JSON 1 AFN内部结构 AFN结构体 - NSURLConnection(iOS9.0废弃了) + AFURLConnectionOperation + AFHTTPRequestOperation + AFHTTPRequestOper

2016-04-22 18:30:40 1317

原创 iOS --KVO

KVO,即:Key-Value Observing, 它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了. 与NSNotification 不同的是。KVO 不需要通知中心对象。而是在对象属性变化之后会直接通知观察者。KVO是基于KVC的。 KVO是一个对象能够观察另外一个对象的属性的值,并且能够

2016-04-22 17:52:11 489

原创 iOS 远程推送通知

iOS 推送通知:注意:通知是一个应用程序级别的操作UIApplication 推送通知 与 NSNotification 区别 NSNotification是抽象的,不可见的 推送通知是可见的iOS中提供了2种推送通知 本地推送通知(Local Notification) 远程推送通知(Remote Notification)推送通知的作用: 可以让不在前台运行的app,告知用户app内

2016-04-22 12:42:03 513

原创 NSCache的简单介绍应用

NSCache介绍 NSCache 是苹果提供的一个专门用来做缓存的类 使用和 NSMutableDictionary 非常相似 是线程安全的 当内存不足的时候,会自动清理缓存 程序开始时,可以指定缓存的数量 & 成本 方法取值 - (id)objectForKey:(id)key; 设置对象,0成本 - (void)setObject:(id)obj forKey:(id)key

2016-04-22 12:11:29 473

原创 GCD高级功能(一次性执行,调度组,延迟操作)

一次性执行 一次性执行 : 可以保证某一段代码在程序运行的过程中只被执行一次 一次性执行是线程安全的,在多线程环境下也是只执行一次 应用场景 : 设计单例模式.(效率比互斥锁高) 可以保证程序在运行的过程中,一个类有且只有一个实例化的对象,而且该对象易于供外界访问 可以节省内存资源/// 验证安全性 : 线程安全- (void)onceDemo2{ for (int i = 0

2016-04-22 12:03:51 666

原创 CGD全局并发队列和主队列的应用

* 1. 主队列特点 :主队列中的任务,只有主线程空闲的时候才会被调度 2. 主队列又叫全局串行队列,程序启动的时候就创建了主队列,在使用的时候不需要创建,直接GET. 2. 主队列中的任务一定是要在主线程执行的. */ pragma mark - 主队列+同步任务// 不能向主队列中添加同步任务,会死锁- (void)GCDDemo2{ // 获取主队列 dispat

2016-04-22 11:37:51 671

原创 iOS 运行时

一、什么是运行时(Runtime)?运行时是苹果提供的纯C语言的开发库(运行时是开发中经常用到的底层技术)二、运行时的作用?能获得某个类的所有成员变量能获得某个类的所有属性能获得某个类的所有方法交换方法实现能动态添加一个成员变量能动态添加一个属性能动态添加一个方法三、案例:运行时获取成员变量名称1、分析#import #import "CKPerson.h"

2016-04-22 11:02:01 1187

原创 仿微信联系人分组(右侧索引)

1,创建模型:用来保存数据创建模型:用来保存数据模型.h文件@interface CKUser : NSObject//重写构造方法-(instancetype)initWith:(NSString*)username name:(NSString*)name;/* * 名字 */@property (assign,r

2016-04-19 13:17:04 2027

原创 iOS 推送通知

iOS 推送通知:注意:通知是一个应用程序级别的操作UIApplication推送通知 与 NSNotification 区别NSNotification是抽象的,不可见的推送通知是可见的iOS中提供了2种推送通知本地推送通知(Local Notification)远程推送通知(Remote Notificat

2016-04-19 12:48:16 551

原创 iOS--AFN实现原理

AFN的基本实现原理和应用

2016-04-17 21:22:53 5323

原创 iOS-GCD的串行队列和并行队列的任务及实现

什么是GCDGCD全称是GrandCentral Dispatch,纯C语言的,提供了非常多强大的函数•GCD的优势1,GCD是苹果公司为多核的并行运算提出的解决方案2,GCD会自动利用更多的CPU内核(比如双核、四核)3,GCD会自动管理线程的生命周期(创建线程、调度任务、销毁线程)4,程序员只需要告诉GCD想要执行什么任务,不需要编写任何线程管理代码

2016-04-17 10:15:11 11416 3

原创 3Dtouch实现

3DTouch分为三个内容:1. 在点击app icon 的手长按并且用力一点,就会出现 几个Item。2.(1)在app 里面长按也要用力往下压,就会可以弹出一个自定义的 ViewController。这个时候如果你放手了那么就会消失。   (2)如果长按往下压弹出了自定义的ViewController 之后,接着往上移动,就可以出现选择Action。3. 如

2016-03-14 19:38:26 610

转载 3Dtouch 基本原理

UIApplicationShortcutItems即用3Dtouch在app图标呼出一个菜单     实现由两种方法:静态菜单和动态菜单  静态菜单是在plist中添加,优点是在第一次打开app前就生效     动态菜单是用代码生成,缺点是在第一次打开app前无法生效故不做演示  实现点击菜单直接打开指定控制器  ?

2016-03-14 14:26:52 3168

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除