该文被密码保护。 阅读全文
posted @ 2018-05-18 11:04 韦韦韦 阅读(11) 评论(0) 推荐(0) 编辑
摘要: MVC 通过代理或者通知传递数据。 MVP 通过P绑定model和view解耦。 MVVM 通过V绑定VM(监听VM属性的变化、方法传递(改变自身被监听属性)) VM绑定model设置自身属性。 阅读全文
posted @ 2018-05-17 15:44 韦韦韦 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 1.Runtime的消息转发机制 消息转发机制基本上分为三个步骤: 1. 动态方法解析 2. 备用接收者 3. 完整转发 2.Runloop的工作原理 runloop、autorelease pool以及线程之间的关系。 每个线程(包含主线程)都有一个Runloop。对于每一个Runloop,系统会 阅读全文
posted @ 2018-05-07 08:58 韦韦韦 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 消息转发是一种功能强大的技术,可以大大增加Objective-C的表现力。什么是消息转发?简而言之,它允许未知的消息被困住并作出反应。换句话说,无论何时发送未知消息,它​​都会以一个很好的包发送到您的代码中,此时您可以随心所欲地执行任何操作。 为什么它被称为 “转发”? 当某个对象没有任何响应某个 阅读全文
posted @ 2018-05-03 09:24 韦韦韦 阅读(220) 评论(0) 推荐(0) 编辑
摘要: //创建数据库版本表 if (![db tableExists:@"tb_dbInfo"]) { result = [db executeUpdate:@"CREATE TABLE tb_dbInfo(version TEXT)"]; } #pragma mark 更新版本号 + (BOOL)update... 阅读全文
posted @ 2018-04-27 13:25 韦韦韦 阅读(171) 评论(0) 推荐(0) 编辑
摘要: +(NSString*)getCacheSize { NSDate* begin = [NSDate date]; NSFileManager* fm = [NSFileManager defaultManager]; __block NSError* error = nil; __block NSUInteger fileSize... 阅读全文
posted @ 2018-04-27 13:22 韦韦韦 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 基础: 1、如何令自己所写的对象具有拷贝功能? 若想令自己所写的对象具有拷贝功能,则需实现 NSCopying 协议。如果自定义的对象分为可变版本与不可变版本,那么就要同时实现 NSCopying与 NSMutableCopying协议。 具体步骤: 需声明该类遵从 NSCopying 协议 实现 阅读全文
posted @ 2018-04-24 14:15 韦韦韦 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 简介:在项目中经常碰到首页顶部是无限轮播,需要靠最上面显示.有的设置导航栏为透明等一系列的方法,这个可以借助第三方.或者干脆简单粗暴的直接隐藏掉导航栏.可是push到下一个页面的时候是需要导航栏的,如何做了,这里给出两种方法. 第一种做法 -注意这里一定要用动画的方式隐藏导航栏,这样在使用滑动返回手 阅读全文
posted @ 2016-12-22 10:36 韦韦韦 阅读(3744) 评论(0) 推荐(0) 编辑
摘要: 我们在开发中有时会遇到一些看似非常复杂的动画,不知该如何下手,今天的这篇文章中我会讲到如何利用CADisplayLink和CAShapeLayer来构建一些复杂的动画,希望能在你下次构建动画中,给你一些启发。 在接下来的文章中,我们会构建如下的一个动画: 该动画是在du的轮廓中进行,类似一个镂空效果 阅读全文
posted @ 2016-12-21 09:08 韦韦韦 阅读(449) 评论(0) 推荐(0) 编辑
摘要: 该错误信息是我在一个.h文件里申明了公共变量,然后在其他类里重复使用。 Build Settings ->No Common Blocks默认为YES,编译器就报错了,需要修改Build Settings里的No Common Blocks为NO。 NO Common Blocks 是什么? 官方的 阅读全文
posted @ 2016-12-19 09:42 韦韦韦 阅读(377) 评论(0) 推荐(0) 编辑
摘要: 问题 weak 变量在引用计数为0时,会被自动设置成 nil,这个特性是如何实现的? 答案 在 Friday QA 上,有一期专门介绍 weak 的实现原理。https://mikeash.com/pyblog/friday-qa-2010-07-16-zeroing-weak-references 阅读全文
posted @ 2016-12-08 08:40 韦韦韦 阅读(3228) 评论(0) 推荐(0) 编辑
摘要: 问题 有没有这样一个需求场景,block 会产生循环引用,但是业务又需要你不能使用 weak self? 如果有,请举一个例子并且解释这种情况下如何解决循环引用问题。 答案 需要不使用 weak self 的场景是:你需要构造一个循环引用,以便保证引用双方都存在。比如你有一个后台的任务,希望任务执行 阅读全文
posted @ 2016-12-08 08:39 韦韦韦 阅读(1463) 评论(0) 推荐(0) 编辑
摘要: 问题 继续回答昨天的问题第二问。 我们知道,在使用 block 的时候,为了避免产生循环引用,通常需要使用 weakSelf 与 strongSelf,写下面这样的代码: 那么请问:为什么 block 里面还需要写一个 strong self,如果不写会怎么样? 答案 在 block 中先写一个 s 阅读全文
posted @ 2016-12-08 08:37 韦韦韦 阅读(2979) 评论(0) 推荐(0) 编辑
摘要: 问题 我们知道,在使用 block 的时候,为了避免产生循环引用,通常需要使用 weakSelf 与 strongSelf,写下面这样的代码: 那么请问:什么时候在 block 里面用 self,不需要使用 weak self? 答案 当 block 本身不被 self 持有,而被别的对象持有,同时 阅读全文
posted @ 2016-12-08 08:35 韦韦韦 阅读(5460) 评论(0) 推荐(0) 编辑
摘要: 题目:找出两个 UIView 的最近的公共 View,如果不存在,则输出 nil 。 分析:这其实是数据结构里面的找最近公共祖先的问题。 一个 UIViewController 中的所有 view 之间的关系其实可以看成一颗树,UIViewController 的 view 变量是这颗树的根节点,其 阅读全文
posted @ 2016-12-08 08:32 韦韦韦 阅读(2532) 评论(0) 推荐(0) 编辑
摘要: Swift中,大量内置类如Dictionary,Array,Range,String都使用了协议 先看看Hashable 哈希表是一种基础的数据结构.,Swift中字典具有以下特点:字典由两种范型类型组成,其中 key 必须实现 Hashable 协议.关于 swift 中字典是怎么实现的,可以看这 阅读全文
posted @ 2016-12-01 15:42 韦韦韦 阅读(1395) 评论(0) 推荐(0) 编辑
摘要: iOS多线程安全的概念在很多地方都会遇到,为什么不安全,不安全又该怎么去定义,其实是个值得深究的话题。 共享状态,多线程共同访问某个对象的property,在iOS编程里是很普遍的使用场景,我们就从Property的多线程安全说起。 Property 当我们讨论property多线程安全的时候,很多 阅读全文
posted @ 2016-11-29 13:43 韦韦韦 阅读(353) 评论(0) 推荐(0) 编辑
摘要: typealias 是用来为已经存在的类型重新定义名字的,通过命名,可以使代码变得更加清晰。使用的语法也很简单,使用 typealias 关键字像使用普通的赋值语句一样,可以将某个已经存在的类型赋值为新的名字。比如在计算二维平面上的距离和位置的时候,我们一般使用 Double 来表示距离,用 CGP 阅读全文
posted @ 2016-11-25 21:02 韦韦韦 阅读(499) 评论(0) 推荐(0) 编辑
摘要: 在iOS开发中,实现蓝牙通信有两种方式,一种是使用传统的GameKit.framework,另一种就是使用在iOS 5中加入的CoreBluetooth.framework。 利用CoreBluetooth框架,我们可以轻松实现两个iOS设备、iOS设备与非iOS蓝牙设备的交互。要注意的一点是目前这 阅读全文
posted @ 2016-11-25 13:45 韦韦韦 阅读(194) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2016-11-23 08:48 韦韦韦 阅读(13) 评论(0) 推荐(0) 编辑
摘要: 一、iOS学习路线图 二、iOS学习路线图——视频篇 C语言进阶 基本运算与进制、基本算法、数组与指针、枚举、宏定义 市场价值: 8000-10000 市场价值: 10000 - 12000 网络 网络基本原理、异步请求、TCP和UDP、Http与Https、Socket通信、Xml与Json、SA 阅读全文
posted @ 2016-11-23 08:15 韦韦韦 阅读(1853) 评论(0) 推荐(0) 编辑
摘要: 从一开始的纯代码计算frame,虽然自认为计算frame 刚刚的,但是到后来还是开始xib的自动约束和手动约束与frame搭配使用,经历这几种方式,大概一年前开始普遍使用masonry来代码约束之后也跃跃欲试的自己体验了把,感觉还不错,分享下,比原生的好使多了。 使用步骤 1.添加Masonry文件 阅读全文
posted @ 2016-11-16 16:54 韦韦韦 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 首先保证你的项目是基于cocoaPods的,并且是通过XX.xcworkspace打开的。cocoaPods安装教程(Xcode6以上) 下面就第三方库MBProgressHUD来讲解如何在Swift项目中使用cocoaPods导入第三方,并使用第三方类库。(前提是你的cocoaPods已经配置好, 阅读全文
posted @ 2016-11-11 14:17 韦韦韦 阅读(2158) 评论(0) 推荐(0) 编辑
摘要: onLoad: function() { that = this; wx.request( { url: "http://op.juhe.cn/onebox/weather/query", header: { "Content-Type": "application/x-www-form-urlencoded" ... 阅读全文
posted @ 2016-11-09 17:17 韦韦韦 阅读(4508) 评论(0) 推荐(0) 编辑
摘要: iOS编程当中的几个集合类:NSArray,NSDictionary,NSSet以及对应的Mutable版本,应该所有人都用过。只是简单使用的话,相信没人会用错,但要做到高效(时间复杂度)精确(业务准确性),还需要了解其中所隐藏的算法知识。 在项目当中使用集合类几乎是不可避免的,集合类的使用场景其实 阅读全文
posted @ 2016-11-03 14:40 韦韦韦 阅读(294) 评论(0) 推荐(0) 编辑
摘要: 权限分类 联网权限 相册权限 相机、麦克风权限 定位权限 推送权限 通讯录权限 日历、备忘录权限 联网权限 相册权限 相机、麦克风权限 定位权限 推送权限 通讯录权限 日历、备忘录权限 联网权限 引入头文件 @import CoreTelephony; 应用启动后,检测应用中是否有联网权限 1 2 阅读全文
posted @ 2016-11-02 15:30 韦韦韦 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 线程、任务和队列的概念 异步、同步 & 并行、串行的特点 一条重要的准则 一般来说,我们使用GCD的最大目的是在新的线程中同时执行多个任务,这意味着我们需要两项条件: 能开启新的线程 任务可以同时执行 结合以上两个条件,也就等价“开启新线程的能力 + 任务同步执行的权利”,只有在满足能力与权利这两个 阅读全文
posted @ 2016-11-02 09:17 韦韦韦 阅读(308) 评论(0) 推荐(0) 编辑
摘要: 1:如果你的App想要访问用户的相机、相册、麦克风、通讯录等等权限,都需要进行相关的配置,不然会直接crash掉。 要想解决这个问题,只需要在info.plist添加NSContactsUsageDescription的key, value自己随意填写就可以: NSBluetoothPeripher 阅读全文
posted @ 2016-10-28 11:01 韦韦韦 阅读(362) 评论(0) 推荐(0) 编辑
摘要: 为什么用 WebSocket 因为APP里面有个聊天功能,需要服务器主动推数据到APP。HTTP 通信方式只能由客户端主动拉取,服务器不能主动推给客户端,如果有实时的消息,要立刻通知客户端就麻烦了,要么客户端每隔几秒钟发一次请求,看看有没有新数据,这种方式想想都知道耗流量电量。还一种方式就是走TCP 阅读全文
posted @ 2016-10-27 14:15 韦韦韦 阅读(815) 评论(0) 推荐(0) 编辑
摘要: 完整项目 v2ex – v2ex 的客户端,新闻、论坛。apps-ios-wikipedia – apps-ios-wikipedia 客户端。jetstream-ios – 一款 Uber 的 MVC 框架。它同时提供了多用户实时通讯支持,一旦启动 JetStream 后端服务,通过 WebSoc 阅读全文
posted @ 2016-10-27 14:10 韦韦韦 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 一、修改系统原生导航条 修改导航条背景颜色 自定义导航条按钮 自定义的按钮图片距屏幕边缘太远,可通过以下代码修改 修改后的rightBarButtonItem边距 修改后的rightBarButtonItem边距 系统默认的rightBarButtonItem边距 系统默认的rightBarButt 阅读全文
posted @ 2016-10-24 09:17 韦韦韦 阅读(1813) 评论(0) 推荐(0) 编辑
摘要: 一、普通程序猿普通程序员使用最常见路人姿势等场。普普通通,纯属陆仁辈。 陆仁贾写法: 撸人已写法:撸人已明显比陆仁贾聪明多了。使用大括号隔离,view1与view2相互独立,创建代码变量不会相互污染。 路人饼写法 二、文艺程序猿文艺程序猿,使用教科书姿势登场。使用builder模式。使用block隔 阅读全文
posted @ 2016-10-13 08:45 韦韦韦 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 第一章:大型网站架构演化 九层之台,始于垒土;千里之行,始于足下。 对于网站的发展,亦是如此,从上世纪90年代开始,互联网经历了20多年的发展,发生了翻天覆地的变化,今天,全球有一半的人使用互联网,从信息检索到实时通信,从电子购物到文化娱乐,互联网渗透到了生活的每一个角落。但是,构建一个高性能的网站 阅读全文
posted @ 2016-07-28 15:23 韦韦韦 阅读(279) 评论(0) 推荐(0) 编辑
摘要: Objective-C 有两个神奇的方法:+load 和 +initialize,这两个方法在类被使用时会自动调用。但是两个方法的不同点会导致应用层面上性能的显著差异。 一、+ initialize 方法和+load 调用时机 首先说一下 + initialize 方法:苹果官方对这个方法有这样的一 阅读全文
posted @ 2016-07-21 11:17 韦韦韦 阅读(298) 评论(0) 推荐(0) 编辑
摘要: 方案一:UIEdgeInsets 适用场景: 适合APP的TabBarItemImage的图片资源放在本地 图片超出tabbar的高度,需移动其位置,来进行适应 适合APP的TabBarItemImage的图片资源放在本地 图片超出tabbar的高度,需移动其位置,来进行适应 弊端: 若在本地配置好 阅读全文
posted @ 2016-07-21 11:09 韦韦韦 阅读(296) 评论(0) 推荐(0) 编辑
摘要: /** * 在父视图中重写该方法,这样可使超出部分响应事件。 */ - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { UIView *view = [super hitTest:point withEvent:event] 阅读全文
posted @ 2016-07-20 16:47 韦韦韦 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 我们在调试程序的时候,往往需要输出一些日志信息,用到NSLog函数,当我们准备发布程序,需要注释掉NSLog代码,这个时候往往会定义一个宏,在调试的时候,会输出日志,在Release正式版本的时候,会关闭日志输出。代码如下: 上面这段代码,是最常见的自定义NSLog的方式,但是上面的这段代码有一定的 阅读全文
posted @ 2016-05-28 21:00 韦韦韦 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 在计算机系统中,运行的应用程序的数据都是保存在内存中的,不同类型的数据,保存的内存区域不同。一、内存分区 栈区(stack) 由编译器自动分配并释放,存放函数的参数值,局部变量等。栈是系统数据结构,对应线程/进程是唯一的。优点是快速高效,缺点时有限制,数据不灵活。[先进后出] 栈空间分静态分配 和动 阅读全文
posted @ 2016-05-27 12:00 韦韦韦 阅读(217) 评论(0) 推荐(0) 编辑
摘要: http://southpeak.github.io 阅读全文
posted @ 2016-05-21 16:01 韦韦韦 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 位图与图像遮罩 简介 位图与图像遮罩和 Quartz 中的其它绘制元素一样。两者在 Quartz 中都是用 CGImageRef 数据类型来表示。 位图和图像遮罩 一个位图是一个像素数组。每一个像素表示图像中的一个点。JPEG, TIFF 和 PNG 图像文件都是位图。应用程序的 icon 也是位图 阅读全文
posted @ 2016-05-21 15:45 韦韦韦 阅读(490) 评论(0) 推荐(0) 编辑