自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(120)
  • 收藏
  • 关注

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

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

2016-08-11 16:58:28 647

转载 NSPredicate

NSPredicate是一个Foundation类,它指定数据被获取或者过滤的方式。它的查询语言就像SQL的WHERE和正则表达式的交叉一样,提供了具有表现力的,自然语言界面来定义一个集合被搜寻的逻辑条件。相比较抽象的谈论它,展示NSPredicate的使用方法更加容易,所以我们来重新审视NSSortDescriptor中使用的示例数据集吧:索引0

2016-07-06 16:46:39 408

转载 深入浅出MagicalRecord-04

这节我们来一起学习下 MagicalRecord 对数据的存储,内容主要来自于 MagicalRecord的github资料。存储的时机一般情况下,我们应该在数据发生变化时就进行存储操作。有些应用选择在退出的时候存储,然而在大多数情况下这是不必要的。事实上,如果你只是当应用退出的时候进行存储,你有可能会丢失数据!如果你的应用崩溃了呢?用户会丢失他们改变的数据,这是很糟糕的体

2016-07-05 15:21:51 678

转载 深入浅出MagicalRecord-03

这节我们来一起学习下MagicalRecord对数据的增删改查,内容主要来自于 MagicalRecord的github资料。1. 增-创建实体创建实体Person *myPerson = [Person MR_createEntity];指定创建的上下文中创建实体Person *myPerson = [Person MR_createInContext:otherCont

2016-07-05 14:25:20 984

转载 深入浅出MagicalRecord-02

这一节我们一起粗略的了解下 CoreData 中的一些核心概念以及 MagicalRecord 的入门准备。只有对 CoreData 理解深入了,才能更轻松的使用 MagicalRecord。1. CoreData 的核心概念先上两幅关键的概念图(1)NSManagedObjectModel 托管对象模型(MOM)

2016-07-05 13:52:54 588

转载 深入浅出MagicalRecord-01

《深入浅出MagicalRecord》我准备做成一个系列,记录我从0开始学习这个框架的所有心得、记录。希望能和大家一起探讨交流。1.深入浅出MagicalRecord-012.深入浅出MagicalRecord-023.深入浅出MagicalRecord-034.深入浅出MagicalRecord-041. CoreData与MagicalRecord

2016-07-05 10:00:18 471

原创 Mantle使用(摘自GitHub)

MantleMantle可以容易的编写一个简单的Cocoa和Cocoa touch应用程序的模型层。典型的模型对象通常我们用Objective-C写的模型层遇到了什么问题?我们可以用Github API来举例。现在假设我们想用Objective-C展现一个Github Issue,应该怎么做?typedef enum : NSUInt

2016-05-13 11:30:51 2284

转载 深入理解 KVC\KVO 实现机制 — KVO

KVC和KVO都属于键值编程而且底层实现机制都是isa-swizzing,所以本来想放在一起讲的。但是篇幅有限所以就分成了两篇博文。 KVC实现机制传送门KVO概述键值观察Key-Value-Observer就是观察者模式。观察者模式的定义:一个目标对象管理所有依赖于它的观察者对象,并在它自身的状态改变时主动通知观察者对象。这个主动通知通常是通过调用各观察者对象所提

2016-03-07 11:34:26 578

转载 深入理解 KVC\KVO 实现机制 — KVC

KVC和KVO都属于键值编程而且底层实现机制都是isa-swizzing,所以本来想放在一起讲的。但是篇幅有限所以就分成了两篇博文 KVO实现机制传送门KVC概述KVC是Key Value Coding的简称。它是一种可以通过字符串的名字(key)来访问类属性的机制。而不是通过调用Setter、Getter方法访问。关键方法定义在 NSKeyValueCodingProtoco

2016-03-07 11:18:44 487

转载 mac上使用生成RSA公钥和密钥

关于RSA加密解密的问题,没事弄了一下,先把主要的流程保存下来,以备交流或者以后用。首先确保你的电脑上安装了openssl,一般mac系统安装后都会自动安装!怎么安装??.....请百度......安装命令如下:sudo apt-get install openssl在你的任何地方创建一个Folder来保存你的公钥和密钥,打开终端Terminal,c

2016-03-04 15:19:21 3637

转载 添加 struct 类型支持

JSPatch 默认支持的 struct 类型只有 CGRect / CGPoint / CGSize / NSRange,若要让 JS 脚本支持其他 struct 类型,需要先手动注册。例如要支持 CGAffineTransform,需要在使用前在 JS 使用 defineStruct() 接口定义:require('JPEngine').defineStruct({ "name

2016-03-03 13:27:48 1125

转载 创建扩展

API所有的扩展都要继承 JPExtension:@interface JPExtension : NSObject+ (void)main:(JSContext *)context;//参数转换相关方法+ (void *)formatPointerJSToOC:(JSValue *)val;+ (id)formatPointerOCToJS:(void *)poin

2016-03-03 13:19:40 454

转载 JPMemory 使用文档

JPMemory 提供了内存操作相关的系列函数,使 JS 脚本可以进行内存/指针操作。扩展加载把 JPMemory.h / JPMemory.m 加入项目JS 脚本使用前调用 require('JPEngine').addExtensions(['JPMemory'])接口文档memset() / memmove() / memcpy() / malloc() 

2016-03-03 13:12:32 437

转载 defineProtocol 使用文档

问题JSPatch 为一个类新增原本 OC 不存在的方法时,所有的参数类型都会定义为 id 类型,因为这种在 JS 里新增的方法一般不会在 OC 上调用,而是在 JS 上用,JS 可以认为一切变量都是对象,没有类型之分,所以全部定义为 id 类型。但有种场景,需要让新增的方法参数类型不是 id,那就是,在 OC 里 .h 文件定义了一个方法,这个方法里的参数和返回值不都是 id 类

2016-03-03 11:50:48 667

转载 JSPatch Loader 使用文档

JSPatch Loader 负责根据版本号向服务端拉取 JSPatch 代码,并对代码进行 RSA 校验/解压/执行,整个校验原理在 JSPatch 部署安全策略 这篇文章里详细说明,不再复述。安装拷贝 Loader/ 目录下的文件到你的项目。配置设 JPLoader.h 的 rootUrl 为你的服务器地址。脚本文件在服务器的存放路径是 ${rootUr

2016-03-03 11:20:19 1325

转载 performSelectorInOC 使用文档

问题JavaScript 语言是单线程的,在 OC 使用 JavaScriptCore 引擎执行 JS 代码时,会对 JS 代码块加锁,保证同个 JSContext 下的 JS 代码都是顺序执行。所以使用 JSPatch 替换的方法都会在这个锁里执行,无法并行执行,这导致如果主线程和子线程同时运行了 JSPatch 替换的方法,子线程就会卡住主线程。对此可以使用 .performS

2016-03-03 10:26:41 1042

转载 JS 断点调试

在 iOS8 下,JSPatch 支持使用 Safari 自带的调试工具对 JS 脚本进行断点调试:启动调试工具首先需要开启 Safari 调试菜单:Safari -> 偏好设置 -> 高级 -> 勾选[在菜单栏中显示“开发”菜单]接着启动APP -> Safari -> 开发 -> 选择你的机器 -> JSContext即可开始调试。连接真机调试时

2016-03-03 09:32:28 2836

转载 defineClass使用文档

APIdefineClass(classDeclaration, instanceMethods, classMethods)@param classDeclaration: 字符串,类名/父类名和Protocol@param instanceMethods: 要添加或覆盖的实例方法@param classMethods: 要添加或覆盖的类方法覆盖方法1.在

2016-03-03 09:01:36 4118

转载 JSPath基础用法

1.require2.调用OC方法   调用类方法   调用实例方法   参数传递   Property   方法名转换3.特殊类型   Struct   Selector   nil4.NSArray / NSString / NSDictionary5.Block   block传递   block 里使用 self 变量

2016-03-02 17:47:07 6257

转载 JSPatch 常见问题

字符串 / 数组 / 字典 操作问题刚使用 JSPatch 经常会对 NSString / NSArray / NSDictionary / NSDate 这四个类的使用感到迷惑,因为 JS 语言本身有对应的这四个类型,会跟 OC 的这四个类混淆。要避免混淆,要弄清楚两点:1.需要认清这四个类有 JS 跟 OC 两种类型//OC@implementation JPTest

2016-03-02 15:33:10 4463

转载 用Model-View-ViewModel构建iOS App

MVC是构建iOS app的标准模式。本文中,我们将重温一下MVC是什么,详述它的缺点,并且告诉你一个新的方式来架构你的app:Model-View-ViewModel。如果你已经开发一段时间的iOS应用,你一定听说过Model-View-Controller,即MVC。MVC是构建iOS App的标准模式。然而,最近我已经越来越厌倦MVC的一些缺点。在本文,我将重温一下MVC是什么,详述

2016-03-01 17:34:11 365

转载 iOS崩溃堆栈符号化,定位问题分分钟搞定!

最近一段时间,在跟开发者沟通过程中,萝莉发觉大家对iOS的应用符号表还不是很清楚,除了咨询关于符号表生成、配置的问题以外,对Bugly崩溃分析需要配置符号表也存在疑问。在这里,萝莉就给大家分享下关于iOS符号表的一些内容。首先,进行常识“脑补”。1. 符号表是什么?符号表就是指在Xcode项目编译后,在编译生成的二进制文件.app的同级目录下生成的同名的

2016-01-26 20:07:24 3283

转载 UITableView-FDTemplateLayoutCell 使用

基本用法If you have a self-satisfied cell, then all you have to do is:#import "UITableView+FDTemplateLayoutCell.h"- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath

2016-01-22 17:50:17 4713

转载 Alcatraz的安装和使用

一、简单说明Alcatraz 是一款 Xcode的插件管理工具,可以用来管理XCode的 插件、模版以及颜色配置的工具。二、如何安装1.github地址:https://github.com/alcatraz/Alcatraz2.安装方法方法一:在命令行中输入如下指令:curl -fsSL https://raw.github.com/alcatraz/Al

2016-01-13 11:55:14 1481

转载 iOS项目的目录结构和开发流程

网上相关的资源不多,开源的且质量还不错的iOS项目也是少之又少,最近正好跟同事合作了一个iOS项目,来说说自己的一些想法。目录结构AppDelegateModelsMacroGeneralHelpersVendorsSectionsResources 一个合理的目录结构首先应该是清晰的,让人一眼看上去就能大

2016-01-06 11:37:45 283

转载 Objective-C Associated Objects 的实现原理

我们知道,在 Objective-C 中可以通过 Category 给一个现有的类添加属性,但是却不能添加实例变量,这似乎成为了 Objective-C 的一个明显短板。然而值得庆幸的是,我们可以通过 Associated Objects 来弥补这一不足。本文将结合 runtime 源码深入探究 Objective-C 中 Associated Objects 的实现原理。在阅

2016-01-06 10:44:36 369

转载 iOS下JS与原生OC互相调用

iOS开发免不了要与UIWebView打交道,然后就要涉及到JS与原生OC交互,今天总结一下JS与原生OC交互的两种方式。JS调用原生OC篇方式一第一种方式是用JS发起一个假的URL请求,然后利用UIWebView的代理方法拦截这次请求,然后再做相应的处理。我写了一个简单的HTML网页和一个btn点击事件用来与原生OC交互,HTML代码如下:

2016-01-05 14:40:13 3438

转载 iOS 宏(define)与常量(const)的正确使用

在iOS开发中,经常用到宏定义,或用const修饰一些数据类型,经常有开发者不知怎么正确使用,导致项目中乱用宏与const修饰你能区分下面的吗?知道什么时候用吗?#define HSCoder @"汉斯哈哈哈"NSString *HSCoder = @"汉斯哈哈哈";extern NSString *HSCoder;extern const NSString *HSCoder;

2015-12-31 17:33:28 750

转载 NSString属性什么时候用copy,什么时候用strong?

我们在声明一个NSString属性时,对于其内存相关特性,通常有两种选择(基于ARC环境):strong与copy。那这两者有什么区别呢?什么时候该用strong,什么时候该用copy呢?让我们先来看个例子。示例我们定义一个类,并为其声明两个字符串属性,如下所示:@interface TestStringClass ()@property (nonatomic, st

2015-12-31 16:35:32 379

转载 Objective-C编码规范:26个方面解决iOS开发问题

介绍我们制定Objective-C编码规范的原因是我们能够在我们的书,教程和初学者工具包的代码保持优雅和一致。即使我们有很多不同的作者来完成不同的书籍。这里编码规范有可能与你看到的其他Objective-C编码规范不同,因为它主要是为了打印和Web的易读性。关于作者这编码规范的创建是由很多来自raywenderlich.com团队成员在Nicholas

2015-12-31 16:11:24 765

转载 YYKit系列之——YYCache使用

YYCache类引用继承自nsobject中声明yycache.h概述YYCache是线程安全的缓存键值。它使用YYMemoryCache存储对象在一个小而快内存缓存,并使用YYDiskCache持久化对象很大和慢磁盘缓存。有关更多信息,请参见YYMemoryCache和YYDiskCache。TasksOther Methods name memory

2015-12-16 15:29:27 15704 1

转载 YYKit系列之——YYModel使用(摘自GitHub)

1 转换 json 到 modelUser *user = [User yy_modelWithJSON:json];2转换model 到 jsonNSDictionary *json = [user yy_modelToJSONObject];

2015-12-15 20:22:14 22753

转载 何为Dispatch Sources

简单来说,dispatch source是一个监视某些类型事件的对象。当这些事件发生时,它自动将一个block放入一个dispatch queue的执行例程中。说的貌似有点不清不楚。我们到底讨论哪些事件类型?下面是GCD 10.6.0版本支持的事件:Mach port send right state changes.Mach port receive right

2015-12-07 16:22:18 887

转载 iOS开发多线程篇—GCD的常见用法(二)

iOS开发多线程篇—GCD的常见用法(二)一、使用嵌套的dispatch,在外层中执行后台任务,在内层中将任务dispatch到main queue:dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ [self goDoSomethingLongAnd

2015-12-03 14:32:07 343

转载 iOS开发多线程篇—GCD的常见用法(一)

iOS开发多线程篇—GCD的常见用法一、延迟执行1.介绍iOS常见的延时执行有2种方式(1)调用NSObject的方法[self performSelector:@selector(run) withObject:nil afterDelay:2.0];// 2秒后再调用self的run方法 (2)使用GCD函数dispatc

2015-12-03 13:50:38 502

转载 iOS开发多线程篇—GCD的基本使用

iOS开发多线程篇—GCD的基本使用一、主队列介绍主队列:是和主线程相关联的队列,主队列是GCD自带的一种特殊的串行队列,放在主队列中得任务,都会放到主线程中执行。提示:如果把任务放到主队列中进行处理,那么不论处理函数是异步的还是同步的都不会开启新的线程。获取主队列的方式: dispatch_queue_t queue=dispatch_get_ma

2015-12-02 13:20:39 380

转载 iOS开发多线程篇—GCD介绍

一、简单介绍1.什么是GCD?全称是Grand Central Dispatch,可译为“牛逼的中枢调度器”纯C语言,提供了非常多强大的函数 2.GCD的优势GCD是苹果公司为多核的并行运算提出的解决方案GCD会自动利用更多的CPU内核(比如双核、四核)GCD会自动管理线程的生命周期(创建线程、调度任务、销毁线程)程序员只需要

2015-12-02 11:52:05 346

转载 iOS开发UI篇—Quartz2D使用(绘图路径)

一、绘图路径A.简单说明在画线的时候,方法的内部默认创建一个path。它把路径都放到了path里面去。1.创建路径  cgmutablepathref 调用该方法相当于创建了一个路径,这个路径用来保存绘图信息。2.把绘图信息添加到路径里边。以前的方法是点的位置添加到ctx(图形上下文信息)中,ctx 默认会在内部创建一个path用来保存绘图信息。在图

2015-10-27 17:05:57 284

转载 iOS开发UI篇—Quartz2D简单使用(三)

一、通过slider控制圆的缩放1.实现过程新建一个项目,新建一个继承自UIview的类,并和storyboard中自定义的view进行关联。界面搭建,如图:代码示例:YYViewController.m文件//// YYViewController.m// 04-对圆进行缩放//// Created by apple on 14-6-

2015-10-27 16:52:40 325

转载 iOS开发UI篇—Quartz2D使用(图片剪切)

一、使用Quartz2D完成图片剪切1.把图片显示在自定义的view中先把图片绘制到view上。按照原始大小,把图片绘制到一个点上。代码:- (void)drawRect:(CGRect)rect { UIImage *image2=[UIImage imageNamed:@"me"]; [image2 drawAtPoint:CGPointM

2015-10-27 16:29:35 426

空空如也

空空如也

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

TA关注的人

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