- 博客(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
696
转载 NSPredicate
NSPredicate是一个Foundation类,它指定数据被获取或者过滤的方式。它的查询语言就像SQL的WHERE和正则表达式的交叉一样,提供了具有表现力的,自然语言界面来定义一个集合被搜寻的逻辑条件。相比较抽象的谈论它,展示NSPredicate的使用方法更加容易,所以我们来重新审视NSSortDescriptor中使用的示例数据集吧:索引0
2016-07-06 16:46:39
454
转载 深入浅出MagicalRecord-04
这节我们来一起学习下 MagicalRecord 对数据的存储,内容主要来自于 MagicalRecord的github资料。存储的时机一般情况下,我们应该在数据发生变化时就进行存储操作。有些应用选择在退出的时候存储,然而在大多数情况下这是不必要的。事实上,如果你只是当应用退出的时候进行存储,你有可能会丢失数据!如果你的应用崩溃了呢?用户会丢失他们改变的数据,这是很糟糕的体
2016-07-05 15:21:51
746
转载 深入浅出MagicalRecord-03
这节我们来一起学习下MagicalRecord对数据的增删改查,内容主要来自于 MagicalRecord的github资料。1. 增-创建实体创建实体Person *myPerson = [Person MR_createEntity];指定创建的上下文中创建实体Person *myPerson = [Person MR_createInContext:otherCont
2016-07-05 14:25:20
1043
转载 深入浅出MagicalRecord-02
这一节我们一起粗略的了解下 CoreData 中的一些核心概念以及 MagicalRecord 的入门准备。只有对 CoreData 理解深入了,才能更轻松的使用 MagicalRecord。1. CoreData 的核心概念先上两幅关键的概念图(1)NSManagedObjectModel 托管对象模型(MOM)
2016-07-05 13:52:54
640
转载 深入浅出MagicalRecord-01
《深入浅出MagicalRecord》我准备做成一个系列,记录我从0开始学习这个框架的所有心得、记录。希望能和大家一起探讨交流。1.深入浅出MagicalRecord-012.深入浅出MagicalRecord-023.深入浅出MagicalRecord-034.深入浅出MagicalRecord-041. CoreData与MagicalRecord
2016-07-05 10:00:18
517
原创 Mantle使用(摘自GitHub)
MantleMantle可以容易的编写一个简单的Cocoa和Cocoa touch应用程序的模型层。典型的模型对象通常我们用Objective-C写的模型层遇到了什么问题?我们可以用Github API来举例。现在假设我们想用Objective-C展现一个Github Issue,应该怎么做?typedef enum : NSUInt
2016-05-13 11:30:51
2342
转载 深入理解 KVC\KVO 实现机制 — KVO
KVC和KVO都属于键值编程而且底层实现机制都是isa-swizzing,所以本来想放在一起讲的。但是篇幅有限所以就分成了两篇博文。 KVC实现机制传送门KVO概述键值观察Key-Value-Observer就是观察者模式。观察者模式的定义:一个目标对象管理所有依赖于它的观察者对象,并在它自身的状态改变时主动通知观察者对象。这个主动通知通常是通过调用各观察者对象所提
2016-03-07 11:34:26
606
转载 深入理解 KVC\KVO 实现机制 — KVC
KVC和KVO都属于键值编程而且底层实现机制都是isa-swizzing,所以本来想放在一起讲的。但是篇幅有限所以就分成了两篇博文 KVO实现机制传送门KVC概述KVC是Key Value Coding的简称。它是一种可以通过字符串的名字(key)来访问类属性的机制。而不是通过调用Setter、Getter方法访问。关键方法定义在 NSKeyValueCodingProtoco
2016-03-07 11:18:44
521
转载 mac上使用生成RSA公钥和密钥
关于RSA加密解密的问题,没事弄了一下,先把主要的流程保存下来,以备交流或者以后用。首先确保你的电脑上安装了openssl,一般mac系统安装后都会自动安装!怎么安装??.....请百度......安装命令如下:sudo apt-get install openssl在你的任何地方创建一个Folder来保存你的公钥和密钥,打开终端Terminal,c
2016-03-04 15:19:21
3717
转载 添加 struct 类型支持
JSPatch 默认支持的 struct 类型只有 CGRect / CGPoint / CGSize / NSRange,若要让 JS 脚本支持其他 struct 类型,需要先手动注册。例如要支持 CGAffineTransform,需要在使用前在 JS 使用 defineStruct() 接口定义:require('JPEngine').defineStruct({ "name
2016-03-03 13:27:48
1181
转载 创建扩展
API所有的扩展都要继承 JPExtension:@interface JPExtension : NSObject+ (void)main:(JSContext *)context;//参数转换相关方法+ (void *)formatPointerJSToOC:(JSValue *)val;+ (id)formatPointerOCToJS:(void *)poin
2016-03-03 13:19:40
488
转载 JPMemory 使用文档
JPMemory 提供了内存操作相关的系列函数,使 JS 脚本可以进行内存/指针操作。扩展加载把 JPMemory.h / JPMemory.m 加入项目JS 脚本使用前调用 require('JPEngine').addExtensions(['JPMemory'])接口文档memset() / memmove() / memcpy() / malloc()
2016-03-03 13:12:32
470
转载 defineProtocol 使用文档
问题JSPatch 为一个类新增原本 OC 不存在的方法时,所有的参数类型都会定义为 id 类型,因为这种在 JS 里新增的方法一般不会在 OC 上调用,而是在 JS 上用,JS 可以认为一切变量都是对象,没有类型之分,所以全部定义为 id 类型。但有种场景,需要让新增的方法参数类型不是 id,那就是,在 OC 里 .h 文件定义了一个方法,这个方法里的参数和返回值不都是 id 类
2016-03-03 11:50:48
697
转载 JSPatch Loader 使用文档
JSPatch Loader 负责根据版本号向服务端拉取 JSPatch 代码,并对代码进行 RSA 校验/解压/执行,整个校验原理在 JSPatch 部署安全策略 这篇文章里详细说明,不再复述。安装拷贝 Loader/ 目录下的文件到你的项目。配置设 JPLoader.h 的 rootUrl 为你的服务器地址。脚本文件在服务器的存放路径是 ${rootUr
2016-03-03 11:20:19
1387
转载 performSelectorInOC 使用文档
问题JavaScript 语言是单线程的,在 OC 使用 JavaScriptCore 引擎执行 JS 代码时,会对 JS 代码块加锁,保证同个 JSContext 下的 JS 代码都是顺序执行。所以使用 JSPatch 替换的方法都会在这个锁里执行,无法并行执行,这导致如果主线程和子线程同时运行了 JSPatch 替换的方法,子线程就会卡住主线程。对此可以使用 .performS
2016-03-03 10:26:41
1088
转载 JS 断点调试
在 iOS8 下,JSPatch 支持使用 Safari 自带的调试工具对 JS 脚本进行断点调试:启动调试工具首先需要开启 Safari 调试菜单:Safari -> 偏好设置 -> 高级 -> 勾选[在菜单栏中显示“开发”菜单]接着启动APP -> Safari -> 开发 -> 选择你的机器 -> JSContext即可开始调试。连接真机调试时
2016-03-03 09:32:28
2909
转载 defineClass使用文档
APIdefineClass(classDeclaration, instanceMethods, classMethods)@param classDeclaration: 字符串,类名/父类名和Protocol@param instanceMethods: 要添加或覆盖的实例方法@param classMethods: 要添加或覆盖的类方法覆盖方法1.在
2016-03-03 09:01:36
4177
转载 JSPath基础用法
1.require2.调用OC方法 调用类方法 调用实例方法 参数传递 Property 方法名转换3.特殊类型 Struct Selector nil4.NSArray / NSString / NSDictionary5.Block block传递 block 里使用 self 变量
2016-03-02 17:47:07
6369
转载 JSPatch 常见问题
字符串 / 数组 / 字典 操作问题刚使用 JSPatch 经常会对 NSString / NSArray / NSDictionary / NSDate 这四个类的使用感到迷惑,因为 JS 语言本身有对应的这四个类型,会跟 OC 的这四个类混淆。要避免混淆,要弄清楚两点:1.需要认清这四个类有 JS 跟 OC 两种类型//OC@implementation JPTest
2016-03-02 15:33:10
4511
转载 用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
404
转载 iOS崩溃堆栈符号化,定位问题分分钟搞定!
最近一段时间,在跟开发者沟通过程中,萝莉发觉大家对iOS的应用符号表还不是很清楚,除了咨询关于符号表生成、配置的问题以外,对Bugly崩溃分析需要配置符号表也存在疑问。在这里,萝莉就给大家分享下关于iOS符号表的一些内容。首先,进行常识“脑补”。1. 符号表是什么?符号表就是指在Xcode项目编译后,在编译生成的二进制文件.app的同级目录下生成的同名的
2016-01-26 20:07:24
3341
转载 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
4758
转载 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
1502
转载 iOS项目的目录结构和开发流程
网上相关的资源不多,开源的且质量还不错的iOS项目也是少之又少,最近正好跟同事合作了一个iOS项目,来说说自己的一些想法。目录结构AppDelegateModelsMacroGeneralHelpersVendorsSectionsResources 一个合理的目录结构首先应该是清晰的,让人一眼看上去就能大
2016-01-06 11:37:45
302
转载 Objective-C Associated Objects 的实现原理
我们知道,在 Objective-C 中可以通过 Category 给一个现有的类添加属性,但是却不能添加实例变量,这似乎成为了 Objective-C 的一个明显短板。然而值得庆幸的是,我们可以通过 Associated Objects 来弥补这一不足。本文将结合 runtime 源码深入探究 Objective-C 中 Associated Objects 的实现原理。在阅
2016-01-06 10:44:36
411
转载 iOS下JS与原生OC互相调用
iOS开发免不了要与UIWebView打交道,然后就要涉及到JS与原生OC交互,今天总结一下JS与原生OC交互的两种方式。JS调用原生OC篇方式一第一种方式是用JS发起一个假的URL请求,然后利用UIWebView的代理方法拦截这次请求,然后再做相应的处理。我写了一个简单的HTML网页和一个btn点击事件用来与原生OC交互,HTML代码如下:
2016-01-05 14:40:13
3481
转载 iOS 宏(define)与常量(const)的正确使用
在iOS开发中,经常用到宏定义,或用const修饰一些数据类型,经常有开发者不知怎么正确使用,导致项目中乱用宏与const修饰你能区分下面的吗?知道什么时候用吗?#define HSCoder @"汉斯哈哈哈"NSString *HSCoder = @"汉斯哈哈哈";extern NSString *HSCoder;extern const NSString *HSCoder;
2015-12-31 17:33:28
778
转载 NSString属性什么时候用copy,什么时候用strong?
我们在声明一个NSString属性时,对于其内存相关特性,通常有两种选择(基于ARC环境):strong与copy。那这两者有什么区别呢?什么时候该用strong,什么时候该用copy呢?让我们先来看个例子。示例我们定义一个类,并为其声明两个字符串属性,如下所示:@interface TestStringClass ()@property (nonatomic, st
2015-12-31 16:35:32
402
转载 Objective-C编码规范:26个方面解决iOS开发问题
介绍我们制定Objective-C编码规范的原因是我们能够在我们的书,教程和初学者工具包的代码保持优雅和一致。即使我们有很多不同的作者来完成不同的书籍。这里编码规范有可能与你看到的其他Objective-C编码规范不同,因为它主要是为了打印和Web的易读性。关于作者这编码规范的创建是由很多来自raywenderlich.com团队成员在Nicholas
2015-12-31 16:11:24
823
转载 YYKit系列之——YYCache使用
YYCache类引用继承自nsobject中声明yycache.h概述YYCache是线程安全的缓存键值。它使用YYMemoryCache存储对象在一个小而快内存缓存,并使用YYDiskCache持久化对象很大和慢磁盘缓存。有关更多信息,请参见YYMemoryCache和YYDiskCache。TasksOther Methods name memory
2015-12-16 15:29:27
15773
转载 YYKit系列之——YYModel使用(摘自GitHub)
1 转换 json 到 modelUser *user = [User yy_modelWithJSON:json];2转换model 到 jsonNSDictionary *json = [user yy_modelToJSONObject];
2015-12-15 20:22:14
22864
转载 何为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
921
转载 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
367
转载 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
539
转载 iOS开发多线程篇—GCD的基本使用
iOS开发多线程篇—GCD的基本使用一、主队列介绍主队列:是和主线程相关联的队列,主队列是GCD自带的一种特殊的串行队列,放在主队列中得任务,都会放到主线程中执行。提示:如果把任务放到主队列中进行处理,那么不论处理函数是异步的还是同步的都不会开启新的线程。获取主队列的方式: dispatch_queue_t queue=dispatch_get_ma
2015-12-02 13:20:39
416
转载 iOS开发多线程篇—GCD介绍
一、简单介绍1.什么是GCD?全称是Grand Central Dispatch,可译为“牛逼的中枢调度器”纯C语言,提供了非常多强大的函数 2.GCD的优势GCD是苹果公司为多核的并行运算提出的解决方案GCD会自动利用更多的CPU内核(比如双核、四核)GCD会自动管理线程的生命周期(创建线程、调度任务、销毁线程)程序员只需要
2015-12-02 11:52:05
368
转载 iOS开发UI篇—Quartz2D使用(绘图路径)
一、绘图路径A.简单说明在画线的时候,方法的内部默认创建一个path。它把路径都放到了path里面去。1.创建路径 cgmutablepathref 调用该方法相当于创建了一个路径,这个路径用来保存绘图信息。2.把绘图信息添加到路径里边。以前的方法是点的位置添加到ctx(图形上下文信息)中,ctx 默认会在内部创建一个path用来保存绘图信息。在图
2015-10-27 17:05:57
307
转载 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
343
转载 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
455
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人