- 博客(42)
- 资源 (8)
- 问答 (4)
- 收藏
- 关注
原创 创建自己的Cocoapods库
创建自己的CocoaPods库1.pod setup2.在github上创建一个repo用来存储specs文件,并利用pod repo add [Specs] [repoPath]将repo添加进去说明:Specs只是给这个repo起的一个别名,方便使用repoPath指的是创建的repo的路径3.使用 pod lib create [Name]来创建带有specs文件的工
2016-05-04 15:50:23 712
原创 iOS单元测试GHUnit + OCMock(使用cocoapods版)
不使用cocoa pods版本带匹配引擎介绍的(比较全面)会使用cocoapods的在podfile中输入:platform :ios, '6.1'pod 'GHUnit','~> 0.5.9'pod 'OCMock','~> 3.3'在终端install OK,你已经完成了一大部分了。注意点:1.在创建工程的时候不要勾选Include Un
2016-04-26 19:21:00 1267
转载 iOS单元测试GHUnit + OCMock(不使用cocoapods版)
GHUnitGHUnit 是一个开源的单元测试框架,具有可视化界面,功能亦相当强大。OCMock 是由 Mulle Kybernetik 为 OS X 和 iOS 平台编写的遵循 mock object 理念的单元测试框架。下面来介绍如何配置 GHUnit 和 OCMock1,首先,创建一个名为 GHUnitProject 的单视图应用程序,注意:不要选中 Incl
2016-04-26 16:35:54 796
转载 iOS 单元测试OCMock介绍
OCMock总结使用OCMock是为了某些不容易构造或者不用一获取的对象,用一个虚拟的对象来创建以便测试。在cocoa编程测试使用系统自带的ocunit,或者第三方的ghunit都没有mock,一般使用oc mock和ghunit的组合来搭建测试框架来测试。mock基本的用法有从class初始化mock对象,id mock = [OCMockObject mockForClass:
2016-04-26 16:23:31 1531
转载 objc_setAssociatedObject关联
关联 关联是指把两个对象相互关联起来,使得其中的一个对象作为另外一个对象的一部分。 关联特性只有在Mac OS X V10.6以及以后的版本上才是可用的。在类的定义之外为类增加额外的存储空间 使用关联,我们可以不用修改类的定义而为其对象增加存储空间。这在我们无法访问到类的源码的时候或者是考虑到二进制兼容性的时候是非常有用。 关联是基于关键字的,因此,我们
2016-04-20 19:17:47 357
转载 CABasicAnimation
CAAnimation---CAPropertyAnimation---CABasicAnimation & CAKeyFrameAnimationCAPropertyAnimation:作用于图层的某个单一属性,并指定它的一个目标值,或者一连串将要做动画的值。CAPropertyAnimation通过指定动画的keyPath作用于单一的属性,CAAnimation通常应用于一个指定的CA
2016-04-20 16:52:44 444
原创 XMPP
XMPPFramework框架内的大致介绍Authentication授权、身份验证Categories分类Core核心Extensions扩展Utilities工具Vendor第三方库在Extensions中:CoreDataStorage coreData存储Reconnect 重新连接Ro
2016-04-19 11:15:18 845
原创 CoreData笔记
1.CoreData的基础结构:如图所示,除去iPhone Application和Data File剩下的就是Core Data的结构(Core Data Stack)。在将用户数据存储到外部文件之前,我们需要考虑以什么样的格式进行存储,所以需要先进行数据表的设计--设计好的数据模型会以Managed Object Model的形式存在于内存中。采用面向对象的思想进行表的设计时,每一
2016-04-19 10:03:08 411
原创 linker command failed with exit code 1 (use -v to see invocation)
关于这个错误做个简单的笔记:1.可能是库引用出问题,看具体的提示。会显示什么找不到2.重复引用,比如我这次遇到的:(紫色部分才是我们要关心的)duplicate symbol _XMPPHelperLoginOrRegister in: /Users/wuwenhao/Library/Developer/Xcode/DerivedData/XMPP-giqpyyuvhqb
2016-04-15 09:57:07 396
原创 7 | Objective-C动态特性
Objective-C的动态特性:动态类型(dynamic typing)、动态绑定(dynamic binding)、动态方法决议、动态加载(dynamic loading)、自省(introspection)动态类型即运行时再决定对象的类型。简单说就是id类型,id类型即通用的对象类,任何对象都可以被id指针所指,而在实际应用中,往往使用introspection(自省)来确定
2016-04-12 09:05:05 808
原创 3 | 对象和消息传递
使用NSObject类的alloc方法可以为对象分配内存,将对象的实例变量初始化为0。但是alloc方法既没有将该对象的实例变量初始化为合适的值,也没有为这个对象准备其他必须的对象和资源。NSObject提供了init方法可以完成对象初始化的基础任务。通常使用一行代码就可以分配和初始化实例:[[ClassName alloc]init];重构真特么的高大上的名字。官方解释:
2016-04-11 16:00:04 756
原创 2 | 使用类
实例变量设置访问实例变量的方式:@private:只能在声明它的类以及与该类型相同的其它实例中访问@protected:相比于private,它可以在该类的子类的实例中访问,一般我们声明的实例变量没有做访问限制的,默认都是protected@public:可以被任何代码访问@package:主要用于库和框架类。可以被其它类实例和函数访问,但是在其所属程序包的外部,会被视为私有变
2016-04-11 14:32:46 301
原创 CoreAnimation余下的链接
图层几何学备注:frame代表了图层的外部坐标(也就是父图层上占据的空间[指一个和屏幕平行的矩形能完全覆盖图层,比如说图层旋转了,那么他的frame就变大了]),bounds是内部坐标。图层旋转按照锚点anchorPoint来旋转。一般我们都知道子图层相对于父图层的位置坐标,但是有时候我们需要知道该子图层相对于其它图层的坐标,CALayer提供了convertPoint系列转换计算
2016-04-11 09:28:41 308
转载 CoreAnimation图层的树状结构和寄宿图
1.图层的树状结构Core Animation的前身叫做Layer Kit,所以,你应该意识到Core Animation并不只是用来做动画的。做动画只是Core Animation特性的冰山一角。Core Animation是一个复合引擎,他的职责就是尽可能的组合屏幕上不同的可视类容,这个内容是被分解成独立的图层,存储在一个叫做图层树的体系之中。这个树形成了UIKit以及在iOS应用
2016-04-08 09:56:56 572
转载 0 | C堆&栈
以下是对堆栈的简单分析:一般情况下程序存放在Rom(只读内存,比如硬盘)或Flash中,运行时需要拷到RAM(随机存储器RAM)中执行,RAM会分别存储不同的信息,如下图所示: 内存中的栈区处于相对较高的地址以地址的增长方向为上的话,栈地址是向下增长的。栈中分配局部变量空间,堆区是向上增长的用于分配程序员申请的内存空间。另外还有静态区是分配静态变量,全局变量空间的;
2016-04-07 14:18:04 347
原创 17 | 摄像头和相册
iPhone拍摄功能异常强大,我们需要知道如何操作摄像头。实现拍照、录像和显示系统照片-----------------------预备知识:UIImagePickerController | 图片选择器(应用程序通过它来操作摄像头和照片库)的对应类使用之前先判断是否支持拍照、录像或者照片库这是很有必要的,比如某些版本的iTouch是不支持camera的。通常设置allowsE
2016-04-06 13:48:07 290
原创 OC--KVC、KVO
KVC | Key Value Coding | 键值编码KVO | Key Value Observer | 键值监听---------------------------KVC实现属性的动态设置和读取KVC的操作方法由NSKeyValueCoding协议提供,而NSObject就实现了这个协议,也就是说ObjC中几乎所有的对象都支持KVC操作,常用的KVC操作方法动态设
2016-04-05 16:08:02 382
原创 单例
单例的作用在整个项目中,这个类的对象只能被初始化一次。可以广泛应用于某些需要全局共享的资源中,比如管理类,引擎类,也可以通过单例来实现传值。UIApplication、NSUserDefaults等都是IOS中的系统单例。单例的写法单例的写法常用的有两种方式:方式1、不考虑线程//#import "Single.h"static Single *defaultma
2016-03-31 10:15:02 347
原创 iOS开发中三种简单的动画
简单的动画都是对底层动画的封装。特点:功能单一,灵活性不高,用法简单直观。三种简单动画:1.首尾式动画2.block动画3.序列帧动画---------------------------------------------------------------------------------------------------------------首尾://适合修
2016-03-21 14:55:01 458
原创 多点下载、断点续传、AFNetworking的简单使用
之前简单的写过单点下载,现在来看看多点下载和断点续传一级简单的AFNetwoking第三方库的使用。
2016-03-14 20:17:21 837
原创 使用Reachability网络监测
使用Reachability监测自己的网络情况。下面是简单的测试。很简单也很实用的一个库。资源下载:使用了CocoaPods导入Reachability库,CocoaPods怎么用:这个简单的测试用到了常用的方法以及这个库的常用用法,监测了三种网络状态,在这三种网络状态下你可以自己处理一些情况。//// ViewController.m// RearchAbility//
2016-03-14 19:40:35 346
原创 ScrollView如何正常响应自己添加的手势
UIScrollView自带了一些手势,有时候可能会与scrollView上面的子view的手势产生冲突。个人测试了一下,发现在scrollView上面的子view上的手势响应优先级是比scrollView上的高的,只是touchesBegan这些自带的方法需要判断一下。下面是一个自定义的view,该view上面其实是有两种手势的,tap和pan,还有重写的touchesBegan。等会将
2016-03-11 09:43:35 1176
原创 CocoaPods里面podfile指定引用库的版本
eg:pod 'AFNetworking', '~> 1.0'//版本号>= 1 && pod 'AFNetworking', '1.0' // 版本号= 1.0pod 'AFNetworking',// 版本号任意下面是podfile指定版本号时的逻辑运算符:Besides no version, or a specific one, i
2016-03-08 17:37:31 1953
转载 iOS开发--HTTP协议
HTTP --> Hypertext Transfer Protocol,超文本传输协议作用:1.规定客户端和服务器之间的数据传输格式2.让客户端和服务器能有效地进行数据沟通相对其它协议(file、mailto、ftp)的优势:简单快速、灵活(容许传输任意类型的数据)-------------------------------------------------通信过
2016-03-08 09:46:28 528
原创 Application Transport Security has blocked a cleartext HTTP (http://) resource load since it is inse
简而言之:ATS禁止了HTTP的明文传输,因为它不安全。可以修改Info.plist文件,让它临时允许明文传输。解决办法:在Info.plist文件中添加"NSAppTransportSecurity", Type为"Dictionary",再添加"NSAllowsArbitraryLoads", Type 为"Boolean",“Value”为“YES”即可。
2016-03-07 16:16:23 283
原创 查看模拟器上的沙盒路径
在网上找了些资料,但是因为Xcode的版本问题,烦的很。最实在的方法就是你在工程里面把路径打出来,然后去找。1.在工程里打出路径:(这里打出了caches的路径)NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
2016-03-07 14:01:15 3028
原创 12 | 数据存储基础
数据存储分为:运行时存储(程序运行时存储数据,程序结束内存回收,数据消失)和持久性存储。iPhone应用程序采用的是沙盒机制,应用程序只能在自己的文件系统中读取文件。iOS数据存储的五种方式:NSUserDefaults:常用的一种持久性存储方式属性列表(Plist):把NSDictionary和NSArray实例写入属性列表并保存序列化:存储方式类似属性列表,但是可以存储自定
2016-03-05 15:19:36 973
原创 iOS开发--根据label内容动态设定label大小
两个方法:- (CGSize)sizeWithAttributes:(nullable NSDictionary *)attrs NS_AVAILABLE(10_0, 7_0);- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(nullable NS
2016-03-03 11:25:16 3606 1
原创 19 | 本地化(国际化)
今天要将以前开发的一个应用做多语言支持,就简单学习了一下应用程序国际化。说明:个人觉得所谓的国际化就是多语言适配(个人理解)程序国际化1.添加语言:说明:目前,应用程序展示的所有文本都是以硬编码字符串存在于Main.storyboard和ViewController里面的。为了本地化这些字符串,你就需要把它们放在一个扩展名为.strings(Xcode使用这种格
2016-03-02 13:03:37 473
原创 iOS开发--在Mac上搭建本地Apache服务器
1.打开终端,输入以下命令:[注意:在用户目录下(root)输入命令]sudo apachectl -k start-----------------------------------------------------------------------如果后面显示AH00558错误,别急,你可以继续下面的操作。在浏览器上输入localhost如下:
2016-03-01 10:46:34 1686 1
转载 iOS开发--网络编程基础
网络编程:一种实时更新应用数据的常用手段,同时是开发优秀网络应用的前提和基础。---------------------------------------基本概念:[important]客户端(Client):移动应用(iOS等)服务器(Server):为客户端提供服务、提供数据、提供资源的机器请求(Request):客户端向服务器索取数据的一种行为响应(Respose)
2016-02-29 19:16:28 442
原创 iOS开发--NSURL讲解
1:NSURL初始化方法NSURL *url=[NSURL URLWithString:@"http://www.baidu.com?id=1"]; 2:解决NSURL初始化失败的相关解决方案.将传进来的NSString 进行 UTF8 转码即可.1:针对 URLWithString 初始化失败的解决方案
2016-02-29 14:53:43 576
原创 iOS开发--UIWebView
UIWebView-->iOS进行混合开发的桥梁,在iOS开发中常用于加载网页和html文件现在对于混合式(传统模式与PC网页端相结合)移动端开发(开发成本低、速度快)越来越流行。在Android开发中有WebView作为混合模式开发的桥梁,在iOS中也同样有一个 UIWebView 组件来作为混合模式开发的桥梁。1.初始化[继承自UIView]继承自UIView,所以初始化方法类
2016-02-29 13:20:00 960
原创 JavaScript--闭包
高阶函数-->函数套函数,函数可以作为另一个函数的参数。[同时一个函数的返回值也可以是个函数,这个就形成了闭包(Closure)]函数作为返回值,这让我想到的了iOS开发中的Block,有兴趣的朋友可以好好比较一下。eg1:function sum(arr) { var sum = function () { //在sum()函数内部定义了新函数 return arr. r
2016-02-29 10:01:22 386
原创 JavaScript--map、reduce、filter、sort
map -- JavaScript区分大小写,Map是数据类型,map是定义在数组里面的方法。map()方法同utterable的forEach()方法一样是高阶函数。map()对其中的每一个元素执行其参数function。eg:var array1 = [1,2,3];function pow (x) { return x*x;}array1.map(pow);-->arra
2016-02-28 15:04:04 1824
原创 JavaScript--Map和Set介绍
在学习JavaScript的数据类型的时候,比较陌生的是Map和Set。[Map和Set是JavaScript的数据类型]Map在学习Map的时候,你可以把Map类比为OC里面的Dictionary。在Javascript中,默认的对象表示方式是在"{""}"中存储键值对,比方说{"name":"wu","age":23},但是对象里面的Key必须是字符串,这使得其有了局限性,因为数字(比
2016-02-28 13:40:16 508
Git Revert 非最后一次提交冲突问题
2016-12-29
iPhone自带闹钟添加闹钟时present效果是怎么做出来的
2016-11-29
视频播放抖动(播放一小段然后再从头播放完)
2015-12-18
关于table跳转的疑虑,手写了为什么跳转不了(只写了前两个单元格),我是小白请原谅
2015-09-15
TA创建的收藏夹 TA关注的收藏夹
TA关注的人