摘要:
模型->jsonString 方式1. NSDictionary *paramDict = getTakeupInfo.yy_modelToJSONObject; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:paramDict
阅读全文
posted @ 2022-05-12 17:58
HJiang
阅读(741)
推荐(0)
摘要:
#import <Foundation/Foundation.h> /** Timer 间接事件目标代理 */ @interface WeakTimerTarget : NSObject @property (nonatomic, weak) id target; @property (nonato
阅读全文
posted @ 2022-05-12 17:50
HJiang
阅读(90)
推荐(0)
posted @ 2018-09-06 21:45
HJiang
阅读(113)
推荐(0)
posted @ 2018-09-06 21:38
HJiang
阅读(102)
推荐(0)
摘要:
WCDB WCDB是一个高效、完整、易用的移动数据库框架,基于SQLCipher,支持iOS, macOS。 WCDB for iOS/macOS 基本特性 易用,WCDB支持一句代码即可将数据取出并组合为object。 WINQ(WCDB语言集成查询):通过WINQ,开发者无须为了拼接SQL的字符
阅读全文
posted @ 2018-01-10 20:28
HJiang
阅读(1262)
推荐(0)
摘要:
WKWebView加载问题 baseURL需要注意 其中2个方式是ios9以后提供的 方法参数baseURL,此参数是html加载的资源是基于的基础路径,也可以理解为资源加载引入的相对路径,一般为[[NSBundle mainBundle] bundleURL], 如果设置的是bundleURL那么
阅读全文
posted @ 2017-12-01 15:52
HJiang
阅读(2494)
推荐(0)
摘要:
UIWebView使用JavaScriptCore实现JS与OC互相调用,。它是从iOS7开始加入的,用 Objective-C 把 WebKit 的 JavaScript 引擎封装了一下,提供了简单快捷的方式与JavaScript交互。 1、简要介绍JavaScriptCore JavaScrip
阅读全文
posted @ 2017-11-14 14:39
HJiang
阅读(451)
推荐(0)
摘要:
使用WKWebView的时候,如果想要实现JS调用OC方法,除了拦截URL之外,还有一种简单的方式。那就是利用WKWebView的新特性MessageHandler来实现JS调用原生方法。 MessageHandler 是什么? WKWebView 初始化时,有一个参数叫configuration,
阅读全文
posted @ 2017-11-14 14:38
HJiang
阅读(2564)
推荐(0)
摘要:
JS调用原生OC篇 方式一 第一种方式是用JS发起一个假的URL请求,然后利用UIWebView的代理方法拦截这次请求,然后再做相应的处理。我写了一个简单的HTML网页和一个btn点击事件用来与原生OC交互,HTML代码如下: 然后在项目的控制器中实现UIWebView的代理方法: 注意:1. JS
阅读全文
posted @ 2017-11-14 14:36
HJiang
阅读(466)
推荐(1)
摘要:
WKWebView特性: 在性能、稳定性、功能方面有很大提升. 允许JavaScript的Nitro库加载并使用(UIWebView中限制). 支持了更多的HTML5特性. 高达60fps的滚动刷新率以及内置手势 将UIWebViewDelegate与UIWebView重构成了14类与3个协议 基本
阅读全文
posted @ 2017-11-14 14:33
HJiang
阅读(4450)
推荐(1)
摘要:
UIWebView的基础使用 属性: UIWebView代理: 如果页面上的链接需要进行拦截处理可以在一下方法中处理,通过返回值控制是否允许加载链接页面内容,YES:记载页面内容,NO:不允许; UIWebViewNavigationType枚举值 让UIWebView更加接近Native 某些情况
阅读全文
posted @ 2017-11-14 14:32
HJiang
阅读(912)
推荐(0)
摘要:
iOS企业版app部署到服务器 .正对ios升级得ios7 以后,plist文件必须放到 https得服务器上了,http不可以用了 部署具体过程 准备文件:plist文件,ipa安装包,html下载页面 .plist参照模板如下 ipa安装包放入plist指定的software-package安装
阅读全文
posted @ 2017-11-13 15:55
HJiang
阅读(4177)
推荐(0)
摘要:
以下是一些加密的思路和加密方式 1.对数据库文件进行加密 2.对存储的内容进行加密,比如对某些重要字段进行加密,加密方式可以采用AES ,Base64,MD5等,其中MD5加密不可逆. 以下内容采用SQLCipher对CoreData数据库内容进行加密. SQLCipher 采用AES 256位对s
阅读全文
posted @ 2017-11-11 15:23
HJiang
阅读(538)
推荐(0)
摘要:
CoreData数据库结构升级和数据迁移 数据库迁移步骤 1.选中.xcdatamodeld文件,然后点击Xcode菜单editor->Add Model Version 比如取名:Model.xcdatamodel 2.取一个Version名字,Based on model是基于现有Model文件
阅读全文
posted @ 2017-11-11 15:22
HJiang
阅读(725)
推荐(0)
posted @ 2017-11-11 15:21
HJiang
阅读(156)
推荐(0)
摘要:
CoreData简介 CoreData是一门功能强大的数据持久化技术,位于SQLite数据库之上,它避免了SQL的复杂性,能让我们以更自然的方式与数据库进行交互。CoreData提供数据--OC对象映射关系来实现数据与对象管理,这样无需任何SQL语句就能操作他们。CoreData数据持久化框架是Co
阅读全文
posted @ 2017-11-11 10:29
HJiang
阅读(351)
推荐(0)
摘要:
网络请求: NSURLConnection 发送同步请求: nsurlconnection发送同步请求是阻塞式,会阻塞当前线程 发送异步请求: nsurlconnection发送异步请求底层是开启子线程发送请求,回调默认是在主线程中回调,如果需要在子线程中回调可以设置代理队列setDelegateQ
阅读全文
posted @ 2017-09-18 22:37
HJiang
阅读(328)
推荐(0)
posted @ 2017-09-16 19:32
HJiang
阅读(182)
推荐(0)
摘要:
方法调用时机 相同点: 程序启动都只会执行仅且一次,再次怎么调用使用类都不会执行了. 不同点: 方法调用时机不一样. > + load程序启动类加载时就会调用,不管该类是否有使用或有Import都会执行 > + initialize 程序启动后,只有类使用时都会触发,包括调用类的类方法或对象方法;
阅读全文
posted @ 2017-09-09 17:13
HJiang
阅读(400)
推荐(0)
摘要:
可以使用GCD创建定时器 创建定时器: 注意创建gcd定时器timer后,需要保存timer,需要有个引用引用timer,要不然timer会销毁 取消定时器 总结 GCD定时器 1.时间调度很准确,时间是以纳秒为单位,比NSTimer更加精确 2.GCD是不受runloop的影响, 比如:拖动scr
阅读全文
posted @ 2017-09-09 11:19
HJiang
阅读(513)
推荐(0)
摘要:
Runtime是什么? runtime是OC底层的一套C语言的API(引入 <objc/runtime.h> 或<objc/message.h>),编译器最终都会将OC代码转化为运行时代码,底层是通过runtime创建的对象. 另外利用runtime 可以做一些OC不容易实现的功能 .动态交换两个方
阅读全文
posted @ 2017-09-04 23:16
HJiang
阅读(245)
推荐(0)
摘要:
runloop运行流程图 定时器 结论:如果定时器在主线程中开启,可以正常运行;定时器在子线程中开启,无法正常运行; 如果对应线程没有 RunLoop 该方法也会失效,也就是说currentRunloop中 没有timer,没有source,也没有OBServer,添加 [NSRunLoop cur
阅读全文
posted @ 2017-09-04 23:00
HJiang
阅读(568)
推荐(0)
摘要:
dispatch_apply,可以并发的循环迭代,性能上可以提高,前提是循环不在乎迭代的顺序 如果不想让在当前线程参与迭代任务,可以把整个迭代任务包含在一个新的线程中 (优先采用此方式), 如: 但此方式需要注意一个问题,就是新开的线程包含的迭代任务,不要是同一个队列,要不然整个迭代任务会在同一个线
阅读全文
posted @ 2017-09-02 21:20
HJiang
阅读(336)
推荐(0)
摘要:
GCD提供了信号semaphore来控制线程并发数,提供一下三个函数 dispatch_semaphore_create(<#long value#>) // 创建信号semaphore,value参数为任务并发同时执行时线程最大并发数 dispatch_semaphore_wait(<#dispa
阅读全文
posted @ 2017-09-02 20:43
HJiang
阅读(678)
推荐(0)
摘要:
dispatch_once 在dispatch_once block中的代码在程序启动到程序退回只会执行一次,如:不管for循环多少,只会一次打印 利用dispatch_once实现单粒模式 单粒模式(不管以任何方式创建对象,内存中永远只会有且仅有一份该对象的地址) 实现单粒,需要步骤: 1.提供一
阅读全文
posted @ 2017-09-01 18:02
HJiang
阅读(267)
推荐(0)
摘要:
单粒模式宏定义 宏中使用##,传入参数作为shared方法名称: 定义开发模式和发布模式条件宏 替换系统NSLog
阅读全文
posted @ 2017-09-01 11:04
HJiang
阅读(290)
推荐(0)
摘要:
OC可变参数: 使用__attribute__((sentinel))语法可以告诉编译器这是一个需要哨兵参数的函数。它的作用就是告诉函数没有参数了。这也是为什么ObjC中[NSArray arrayWithObjects: ...,nil]最后必须以nil参数结尾的原因
阅读全文
posted @ 2017-09-01 11:01
HJiang
阅读(433)
推荐(0)
摘要:
GCD全称Grand Central Dispatch,是Apple提供的一套底层API,提供了一种新的方法来进行并发程序编写,它的API包含在libdispatch库中. 觉得需要理解GCD中的三个要点: 1.同步异步(sync,async) sync表示同步,不会开启新线程,任务是在当前线程中执
阅读全文
posted @ 2017-08-29 14:51
HJiang
阅读(279)
推荐(0)
摘要:
.计算时间间隔多少秒,可以使用到计算程序代码执行时间 方式1: 方式2: 方式3: 计算N天前日期 当前2017-09-16 运行结果: 2017-09-18
阅读全文
posted @ 2017-08-25 00:02
HJiang
阅读(235)
推荐(0)
摘要:
综合项目 iOSProject 国内优秀框架 YYKit YYKit 是一组庞大、功能丰富的 iOS 组件。 为了尽量复用代码,这个项目中的某些组件之间有比较强的依赖关系。为了方便其他开发者使用,我从中拆分出以下独立组件: YYModel — 高性能的 iOS JSON 模型框架。 YYCache
阅读全文
posted @ 2017-08-22 17:19
HJiang
阅读(435)
推荐(0)