自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(119)
  • 资源 (1)
  • 收藏
  • 关注

转载 iOS下KVO使用过程中的陷阱

KVO,全称为Key-Value Observing,是iOS中的一种设计模式,用于检测对象的某些属性的实时变化情况并作出响应。网上广为流传普及的一个例子是利用KVO检测股票价格的变动,例如这里。这个例子作为扫盲入门还是可以的,但是当应用场景比较复杂时,里面的一些细节还是需要改进的,里面有多个地方存在crash的危险。本文旨在逐步递进深入地探讨出一种目前比较健壮稳定的KVO实现方案,弥补网上大部分

2017-03-01 17:02:31 380

转载 WWDC2016 Session笔记 - iOS 10 UICollectionView新特性

前言关于 iOS 10 UICollectionView的新特性,主要还是体现在如下3个方面顺滑的滑动体验现在基本上人人都离不开手机,手机的app也每天都有人在用。一个app的好坏由它的用户体验决定。在可以滑动的视图里面,必须要更加丝滑柔顺才能获得用户的青睐。这些UICollectionView的新特性可以让你们的app比原来更加顺滑,而且这些特性只需要你加入少量的代码即可达到目的

2016-11-02 11:38:39 569

转载 开发中常见问题集锦

1.重复调用2次loadView和viewDidLoad最好不要在UIViewController的loadView方法中改变状态栏的可视性(比如状态栏由显示变为隐藏、或者由隐藏变为显示),因为会导致重复调用2次loadView和viewDidLoad方法假设状态栏本来是处于显示状态的:下面的是错误代码:[java] view p

2016-09-07 15:32:47 440

转载 loadView、viewDidLoad及viewDidUnload的关系

标题中所说的3个方法,都是UIViewController的方法,跟UIViewController的view属性的生命周期息息相关。接下来我会一一阐述它们的作用以及它们之间的联系。loadView1.什么时候被调用?每次访问UIViewController的view(比如controller.view、self.view)而且view为nil,loadView方法就会被调用。

2016-09-07 15:31:36 322

转载 iOS开发调试技巧总结

作者:乞力马扎罗的雪  原文对于软件开发而言,调试是必须学会的技能,重要性不言而喻。对于调试的技能,基本上是可以迁移的,也就是说你以前在其他平台上掌握的很多调试技巧,很多也是可以用在iOS开发中。不同语言、不同IDE、不同平台的调试,有同性也有个性。今天我们就来学习一下iOS开发中的调试技巧,语言暂用为OC,IDE当然是强大的Xcode。首先说明下,Xcode已经为我们调试项目提供了极大的

2016-08-30 15:24:26 705

转载 iOS性能优化:Instruments使用实战

最近采用Instruments 来分析整个应用程序的性能.发现很多有意思的点,以及性能优化和一些分析性能消耗的技巧,小结如下。Instruments使用技巧关于Instruments官方有一个很有用的用户使用Guide,当然如果不习惯官方英文可以在这里找到中文本翻译版本PDF参阅.Instruments 确实是一个很强大的工具,用它来收集关于一个或多个系统进程的性能和行为的数据

2016-08-26 14:58:30 637

转载 禅与 Objective-C 编程艺术 (Zen and the Art of the Objective-C Craftsmanship 中文翻译)

原文 https://github.com/objc-zen/objc-zen-bookGitbook 链接(包含 PDF, mobi, epub 格式): http://yourtion.gitbooks.io/objc-zen-book-cn/ (感谢 yourtion 整理 )前言Swift贡献给社区作者关于中文翻译条件语句尤达表达式nil 和 BOO

2016-08-26 14:39:17 1091

转载 面向接口编程简单比较

java中有抽象类和接口类的概念:抽象类:包含抽象方法的类叫做抽象类。如果一个类包含一个或多个抽象方法,该类必须被限定为抽象的。如果从一个抽象类继承,并想创建该类的对象,那么必须为基类的所有抽象方法提供方法定义。如果不这样做(可以选择不做),那么导出类便也是抽象类,且编译器将会强制我们用abstract关键字来限定这个类。      抽象类和抽象方法非常有用,因为他们可以使

2016-08-22 10:52:01 379

转载 轻松学习之 IMP指针的作用

可能大家一直看到有许多朋友在Runtime相关文章中介绍IMP指针的概念,那么IMP究竟有什么实际作用呢?让我们先从一个函数看起来。Method Swizzling如果对Runtime有一定了解的话,一定听说过或者用过这个函数:1void method_exchangeImplementations(Method m1, Me

2016-08-19 15:49:02 315

转载 详解Runtime运行时机制

简介Runtime 又叫运行时,是一套底层的 C 语言 API,其为 iOS 内部的核心之一,我们平时编写的 OC 代码,底层都是基于它来实现的。比如:[receiver message];// 底层运行时会被编译器转化为:objc_msgSend(receiver, selector)// 如果其还有参数比如:[receiver message:(id)arg...];// 底

2016-08-19 15:48:04 6836

转载 UIView非常用方法及属性详解

在调用视图的drawRect:方法之前,UIKit 会自动对描画环境进行配置,使左上角成为坐标系统的原点,在这个环境中发生的 Quartz 调用都可以正确地在视图中描画。 视图对象通过 frame、 bounds、和 center 属 性声明来跟踪自己的大小和位置。frame 属性包含一个矩形,即边框矩形,用于指定视图相对于其父视图坐标系统的位置和大小。bounds 属性也包含

2016-07-27 14:18:09 491

转载 iOS绘图教程

Core Graphics Framework是一套基于C的API框架,使用了Quartz作为绘图引擎。它提供了低级别、轻量级、高保真度的2D渲染。该框架可以用于基于路径的绘图、变换、颜色管理、脱屏渲染,模板、渐变、“”阅读器iOS开发iOSiOS绘图本文是《Programming iOS5》中Drawing一章的翻译,考虑到主题

2016-07-27 11:15:54 372

转载 NSURLSession下载文件—断点续传

首先我们懒加载一下:NSURLSession会话配置对象大多情况使用默认的配置就可以了NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];11NSOperationQueue:没有串行的概念delegateQueue:传入nil和[[NSOpe

2016-07-26 18:43:57 379

转载 对 AFNetworking 二次封装应用 - POST

//对 AFNetworking 二次封装应用 post  #import     typedef void (^HttpSuccess)(id json);    typedef void (^HttpFailure)(NSError *error);    @interface NetWork : NSObject    + (void)postWithAp

2016-07-26 17:09:54 444

转载 使用 iOS 8 Spring Animation API 创建动画

使用 iOS 8 Spring Animation API 创建动画 编程指南Spring Animation 是一种特殊的动画曲线,自从 iOS 7 开始被广泛应用在系统动画中。下图中演示的系统自带的动画效果,都使用了 Spring Animation:  事实上,从 iOS 7 起几乎所有的系统动画都用的是 Spring Animation,包括 App 文件夹打开

2016-07-26 11:25:14 304

转载 使用运行时机制向Category中添加属性

简明扼要 前言了解OC的都应该知道,在一般情况下,我们是不能向Category中添加属性的,只能添加方法,但有些情况向,我们确实需要向Category中添加属性,而且很多系统的API也有一些在Category添加属性的情况,例如我们属性的UITableView的section和row属性,就是定义在一个名为NSIndexPath的分类里的,如下 那这到底

2016-07-22 11:50:04 1521

翻译 category

category使用 objc_setAssociatedObject/objc_getAssociatedObject 实现添加属性属性 其实就是get/set 方法。我们可以使用  objc_setAssociatedObject/objc_getAssociatedObject  实现 动态向类中添加 方法@interface NSObject (Cate

2016-07-12 15:33:01 252

转载 NSPredicate的学习讲解

iOS Predicate 即谓词逻辑。和数据库的SQL语句具有相似性,都是从数据堆中根据条件进行筛选。1.使用场景:               (1)NSPredicate给我留下最深印象的是两个数组求交集的一个需求,如果按照一般写法,需要2个遍历,但NSArray提供了一个filterUsingPredicate的方法,用了NSPredicate,就可以不用遍历!       (

2016-07-11 16:34:35 480

转载 SQLite模糊查询

一、示例说明:本文简单示例了SQLite的模糊查询1.新建一个继承自NSObject的模型该类中的代码: 1 // 2 // YYPerson.h 3 // 03-模糊查询 4 // 5 // Created by apple on 14-7-27. 6 // Copyright (c) 2014年 wendingding. All rights re

2016-07-11 16:17:04 6474

转载 SQLite的应用

文顶顶最怕你一生碌碌无为 还安慰自己平凡可贵iOS开发数据库篇—SQLite的应用iOS开发数据库篇—SQLite的应用一、简单说明  在iOS中使用SQLite3,首先要添加库文件libsqlite3.dylib和导入主头文件。  导入头文件,可以使用库中的函数(是纯C语言的) 二、具体说明新建一个项目,在项目的主界面中

2016-07-11 16:13:39 258

转载 SQL代码应用示例

iOS开发数据库篇—SQL代码应用示例一、使用代码的方式批量添加(导入)数据到数据库中1.执行SQL语句在数据库中添加一条信息插入一条数据的sql语句:  点击run执行语句之后,刷新数据2.在ios项目中使用代码批量添加多行数据示例  代码示例: 1 // 2 // main.m 3 // 01-为数据库

2016-07-11 16:11:50 871

转载 SQL-iOS开发数据库篇

iOS开发数据库篇—SQL一、SQL语句如果要在程序运行过程中操作数据库中的数据,那得先学会使用SQL语句1.什么是SQLSQL(structured query language):结构化查询语言SQL是一种对关系型数据库中的数据进行定义和操作的语言SQL语言简洁,语法简单,好学好用 2.什么是SQL语句使用SQL语言编写出

2016-07-11 16:01:13 341

原创 iOS关闭手势返回功能

额外的我在有的时候,我们不需要手势返回功能,那么可以在页面中添加以下代码:  [objc] view plain copy print?- (void)viewDidAppear:(BOOL)animated  {      [super viewDidAppear:animated];        //

2016-05-31 13:46:47 3620

转载 iOS消息推送之APNS

一、背景概述:1,环境配置APNS:Apple Push Notification Service。本文对推送相关概念不再赘述,只侧重完整流程。 Demo 开发环境:Mac os 10.9.4  ,Xcode 6.0.1 ;测试设备:iphone 4s(iOS 7.1)服务端开发环境:mac 10.9.4  + php 5.4.24、Demo 下载地址:点击

2016-05-30 18:26:10 706

转载 iOS实现长时间后台运行

前段时间做一个闹钟类型的产品,使用localnotification不太符合要求。对于ios7,苹果支持几种后台运行模式,backgroundTask,voip,后台播放音乐等,具体看官方文档就好。我这边需要在后台跑一个长时间运行的计时器,所以就不能让app进入suspend状态。很早以前听说可以通过后台播放音乐来实现,借鉴了一下,测试好几天,找出来了一个还比较靠谱的方案:

2016-05-30 15:19:15 409

原创 CAAnimation--CALayer

CircleView#import typedef void(^ScaleCompletionHandler)();@interface CircleView : UIView- (instancetype) initWithFrame:(CGRect)frame andTheMaxSize:(CGFloat)maxS

2016-04-26 18:49:45 353

翻译 UIView Animation

@interface UIView(UIViewAnimation)+ (void)beginAnimations:(nullableNSString *)animationID context:(nullablevoid *)context; // additional context info passed to will start/did stop sele

2016-04-24 15:37:58 479

转载 数据持久化之NSKeyedArchiver

基本的数据类型如NSString、NSDictionary、NSArray、NSData、NSNumber等可以用属性列表的方法持久化到.plist 文件中,但如果是一些自定义的类的话,属性列表的方法就不管用了。archiver 方法可以做到。编码如下:     首先新建一个person类,定义它的三个属性,如下:[cpp] view pla

2016-04-08 17:19:41 236

原创 NSOperation简单讲解

前段时间,由于公司的业务调整和整体搬迁,无奈之下我选择了离职。离职前帮公司招聘一个负责维护的iOS,问了几个前来应聘的,问到多线程这块,很多人支支吾吾说不清楚,于是自己随意写个小Demo,给大家做个借鉴。#import "ViewController.h"@interface ViewController ()@property(nonatomic,st

2016-04-08 12:07:40 228

转载 App Extensions学习笔记

extension是iOS8以后开放的一种对几个固定系统区域的扩展机制,它可以在一定程度上弥补iOS的沙盒机制对应用间通信的限制。一、关于App Extensions extension是iOS8新开放的一种对几个固定系统区域的扩展机制,它可以在一定程度上弥补iOS的沙盒机制对应用间通信的限制。 extension的出现,为用户提供了在其它应用中使用我们应用提供的服务的

2016-04-07 16:01:56 722

转载 APNS推送服务证书制作 图文详解教程

iOS消息推送的工作机制可以简单的用下图来概括: Provider是指某个iPhone软件的Push服务器,APNS是Apple Push Notification Service的缩写,是苹果的服务器。 上图可以分为三个阶段:第一阶段:应用程序把要发送的消息、目的iPhone的标识打包,发给APNS。 第二阶段:APNS在自身的已注册Push服务的iPhone

2016-04-07 12:34:09 489

转载 CocoaAsyncSocket 网络通信使用之Protobuf安装(五)

CocoaAsyncSocket网络通信使用之Protobuf安装(五) Protocol Buffers是Google推出的工具,主要用来处理数据的序列化和反序列化,能够针对数据的不同类型做压缩存储,从而减少网络数据传输的大小。一般我们在写数据协议的时候,都需要针对不同的平台实现多次数据解析方法,而Protocol Buffers的另一个功能就是一次模版定制,多平台编译使用。

2016-04-07 10:38:16 810

转载 CocoaAsyncSocket 网络通信使用之RHSocketKit框架(四)

CocoaAsyncSocket 网络通信使用之RHSocketKit框架(四)之前已经对socket通信框架的设计和使用做了说明,限于码字水平,基本都是代码累积的,总体结构不能一目了然,现在增加类图结构(https://github.com/zhu410289616/RHSocketKit/tree/master/Docs)。项目代码和资料已经

2016-04-07 10:36:14 407

转载 CocoaAsyncSocket 网络通信使用之http协议测试(三)

CocoaAsyncSocket 网络通信使用之http协议测试(三)通过前一篇CocoaAsyncSocket网络通信使用之数据编码和解码(二),我们已经搭建好了socket的框架。框架主要分为以下5个模块:1-网络连接模块(socket connection)2-数据协议框架(socket packet content protocol)3-发送数据前的编码模块

2016-04-07 10:35:29 304

转载 CocoaAsyncSocket网络通信使用之数据编码和解码(二)

在上一篇CocoaAsyncSocket网络通信使用之tcp连接(一)中,我们已经利用CocoaAsyncSocket封装了自己的socket connection。本篇主要是通过引入编码器和解码器,将可以共用的内容模块化。简述:在tcp的应用中,都是以二机制字节的形式来对数据做传输。一般会针对业务协议构造对应的数据结构/数据对象,然后在使用的时候针对协议转换成二进制数

2016-04-07 10:34:24 835

转载 CocoaAsyncSocket网络通信使用之tcp连接(一)

CocoaAsyncSocket网络通信使用之tcp连接(一)简述:在互联网世界中,网络访问是必不可少的一部分,而对于程序员来说,网络编程却是一个比较复杂的存在,特别是socket处理方面。在android平台中,java类库丰富,封装良好,比如:mina,netty等等。而在ios平台中,也有出名的socket库,CocoaAsyncSocket。最近碰到一些朋友

2016-04-07 10:14:14 798

转载 UDID替代方案

背景:大多数应用都会用到苹果设备的UDID号,UDID通常有以下两种用途:1)用于一些统计与分析目的;【第三方统计工具如友盟,广告商如ADMOB等】2)将UDID作为用户ID来唯一识别用户,省去用户名,密码等注册过程。不过,2011年时,苹果就宣布ios5.0以后的系统中将不再支持以下方法获取用户的UDID【苹果设备的唯一识别码】:[UIDevice current

2016-04-06 17:52:55 275

原创 App中判断网络状态的3种方法

第一种:1。- (void)viewDidLoad {    [superviewDidLoad];    [self.navigationControllersetNavigationBarHidden:NO];    self.navigationItem.title =@"";    ud = [NSUserDefaultsstan

2016-04-05 17:59:26 1784

转载 iOS 高级内存管理:比较__unsafe_unretain、__strong、__weak、__autoreleasing

在前面分析了nomantic、copy、retain等属性之后,在教新的XCode版本中,我们又经常会看到__unsafe_unretain、__strong、__weak、__autoreleasing这四种属性,那么他们有什么用呢?__unsafe_unretain、__strong、__weak、__autoreleasing是出现在 LLVM 编译器 3.0版本之后。而__unsa

2016-03-30 18:07:30 394

原创 限制UITextField手机号只能输入11位

//输入手机号码-(UITextField *)phoneNumTF{    if (!_phoneNumTF) {        _phoneNumTF = [[UITextFieldalloc] initWithFrame:CGRectMake(0,65, kSCreen_width, 60)];        _phoneNumTF.place

2016-03-30 17:27:27 6989

自动控制原理

自动控制原理 胡寿松版本 课件PPT 学习和考研必备

2013-01-18

空空如也

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

TA关注的人

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