摘要:http://blog.csdn.net/lengshengren/article/details/1767唐巧的博客:http://www.devtang.com/blog/2014/05/25/use-cocoapod-to-manage-ios-lib-dependency/ 阅读全文
posted @ 2015-05-13 16:48 &王先生 阅读 (77) 评论 (0) 编辑
摘要:本地推送: 本地推送主要应用在备忘录,闹钟等本地的,基于时间定时的消息提醒。本篇不做详细描述。远程推送:APNS(苹果推送通知服务) iOS远程推送机制的原理及流程: 注册推送(橙色部分):若该App允许接收推送消息,则先要在代码中注册远程推送。注册推送后,iOS带着设备序列号去... 阅读全文
posted @ 2015-05-13 11:08 &王先生 阅读 (560) 评论 (0) 编辑
摘要:这篇博客总结得很好,我只对在iOS上集成支付宝做简洁的步骤总结。http://www.it165.net/pro/html/201402/9376.htmliOS集成支付宝支付的步骤:准备工作的步骤: 1. 先于支付宝签约,获得商户ID(partner)和账号ID(seller);(主要由公司负责... 阅读全文
posted @ 2015-05-12 21:01 &王先生 阅读 (313) 评论 (0) 编辑
摘要:定位: 手机上定位的实现主要有三种方式:基站(附近基站的位置),wifi(所连接路由器的位置),卫星(最准确,也最耗能)。iOS的定位功能主要是由CLLocationManager类来完成的。这个类属于CoreLocation类库,所以使用定位功能之前,现在头文件中导入该类库。定位的步骤: ... 阅读全文
posted @ 2015-05-12 17:58 &王先生 阅读 (184) 评论 (0) 编辑
摘要:QQ登录的流程: 1.下载SDK,并添加到项目中; 2.添加SDK需要的依赖库,以及配置文件; 3.重写APPDelegate的方法handleOpenURL和openURL; 4.实现TencentSessionDelegate协议,并实现里的几个方法; 5.创建TencentOAuth... 阅读全文
posted @ 2015-05-08 15:39 &王先生 阅读 (152) 评论 (0) 编辑
摘要:对不同尺寸设备UI的适配: 很多时候,我们的App可能运行在不同尺寸的设备上,或者横竖屏时,呈现方法应该也不一样。这样便要求UI里各控件的位置和大小不能写死。 对于不同尺寸UI的适配,一般有三种对策:下策:硬编码,对不同的设备,写不同的代码布局。 在代码中判断设别的型号,从而根据不同的尺寸来设... 阅读全文
posted @ 2015-05-02 16:28 &王先生 阅读 (164) 评论 (0) 编辑
摘要:强引用和弱引用: 我们已经知道OC中的内存管理是通过“引用计数器”来实现的。一个对象的生命周期取决于它是否还被其他对象引用(是否retainCount=0)。但在有些情况下,我们并不希望对象的销毁时间由是否被其他对象引用来决定,而是这个对象本该是什么时候销毁就什么时候被销毁。这时,我们得引入“强引... 阅读全文
posted @ 2015-05-02 14:10 &王先生 阅读 (1766) 评论 (0) 编辑
摘要:前面我们讲iOS不同界面间传值的时候,说过可以通过通知中心进行传值。那到底什么是通知中心,他是如何实现传值的呢? NSNotificationCenter是单例的,只提供了一个唯一的实例化入口,在整个应用内只存在一个实例: [NSNotificationCenter defaultCe... 阅读全文
posted @ 2015-04-21 13:31 &王先生 阅读 (122) 评论 (0) 编辑
摘要:SQLite数据库: SQLite是轻量级的数据库,适合应用在移动设备和小型设备上,它的优点是轻量,可移植性强。但它的缺点是它的API是用C写的,不是面向对象的。整体来说,操作起来比较麻烦。所以,一般在iOS的数据库操作中我们都使用封装库FMDB。FMDB:FMDB是第三方的数据库框架,它用OC封... 阅读全文
posted @ 2015-04-06 14:12 &王先生 阅读 (196) 评论 (0) 编辑
摘要:数据持久化的几种方式:一、属性列表文件: .plist文件是种XML文件。数组,字典都可以和它互相转换。数组和字典可以写入本地变成plist文件。也可以读取本地plist文件,生成数组或字典。读取plist文件生成数组:plist——>NSArray把数组写入plist文件:NSArray——>p... 阅读全文
posted @ 2015-04-02 20:17 &王先生 阅读 (145) 评论 (0) 编辑
摘要:1.URL中文问题:URL不支持中文。若出现中文,需要对URL进行utf-8编码。NSString *urlString = [kULRSTRING stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];2.把UIImage转... 阅读全文
posted @ 2015-04-02 16:47 &王先生 阅读 (192) 评论 (0) 编辑
摘要:JSON解析和XML解析:用苹果原生的代理方式的网络请求后返回的都是二进制数据(NSData)。若是json,则通过NSJSONSerialization把NSData数据转换为JSON对象。NSDictionary *jsonDict = [NSJSONSerialization JSONObje... 阅读全文
posted @ 2015-04-01 13:46 &王先生 阅读 (152) 评论 (0) 编辑
摘要:同步请求和异步请求: 同步请求会阻塞主线程;不会开启新的线程,还是主线程,所以直到请求成功后,才能执行其它操作。 异步请求不会阻塞主线程。开启新的线程去请求服务器,而不影响用户的交互操作等其他动作。使用NSURLConnection发送同步请求和异步请求:同步请求:异步请求:(block回调方式... 阅读全文
posted @ 2015-03-31 10:59 &王先生 阅读 (259) 评论 (0) 编辑
摘要:这几篇博客总结的不错: 点击进入 点击进入总结起来方案一般有以下几种: 1.不使用透明视图; 2.减少视图的个数; 3.cell复用机制;(重点) 4.图片缓存; 5.网络请求使用非主线程。 6.预渲染???cell的复用机制: 系统刚开始的时候,只会生成屏幕内能显示出的cell。... 阅读全文
posted @ 2015-03-30 20:56 &王先生 阅读 (59) 评论 (0) 编辑
摘要:iOS沙盒机制:什么是沙盒机制? 点击进入 点击进入 沙盒机制(SandBox)是一种安全体系,它规定了APP的所有文件数据都必须存储在这片区域。所有非代码文件的数据都保存在这片区域。沙盒里有四个文件Document,Library,tmp和APP包。获取该三个文件的方法:沙盒的文件操作: 阅读全文
posted @ 2015-03-30 15:45 &王先生 阅读 (52) 评论 (0) 编辑
摘要:iOS的代理模式: A要完成某个功能,它可以自己完成,但有时出于一些原因,不方便自己完成。这时A可以委托B来帮其完成此功能,即由B代理完成。但是这个功能不是让B随随便便任其完成。此时,会有一个协议文件,里面定义了完成该功能的方法规范。B得实现这个协议,严格按照协议里定的规范完成。这就是iOS代理模... 阅读全文
posted @ 2015-03-22 20:55 &王先生 阅读 (78) 评论 (0) 编辑
摘要:iOS的单例模式: 单例,即为单个实例,确保一个类里只有一个实例,向整个系统提供一个唯一的实例。 甚至为了严格提供唯一的实例,通常只允许该类自己提供实例化的方法,不允许出现其他入口。这时我们通常得重写allocWithZone方法等,让这些方法内部也执行那个自己封装的实例化方法。记住封装单例方法... 阅读全文
posted @ 2015-03-22 20:17 &王先生 阅读 (65) 评论 (0) 编辑
摘要:程序一经启动,AppDelegate的实例就会创建一个充满屏幕的window,它是App唯一的,一个App对应一个window。window是UIWindow类型的,继承于UIView,是种特殊的UIView。而在iOS开发中我们每当要新建一个界面时,就新建一个UIViewController,... 阅读全文
posted @ 2015-03-18 13:24 &王先生 阅读 (76) 评论 (0) 编辑
摘要:怎么在填写完UITextField之后,点击空白处,隐藏软键盘。下面两个方法都可以隐藏键盘 [tf resignFirstResponder]; 停止textfield的第一响应者 [self.view endEditing:YES]; 结束view的编辑,它便会隐藏键盘,使其不能编辑视图。有了... 阅读全文
posted @ 2015-03-18 12:49 &王先生 阅读 (58) 评论 (0) 编辑
摘要:UIImageView: 专门用来放置图片的视图。它里面放置的图片是[UIImage imageNamed: (NSString) imgName]生成的,注意千万别只写成图片NSString类型的名字。 UIImageView里有几个支持动画效果的属性和方法。- (void)startAnim... 阅读全文
posted @ 2015-03-17 13:38 &王先生 阅读 (182) 评论 (0) 编辑
摘要:iOS程序的运行原理:main.m:1. main.m 主函数是所有程序的入口函数。2. 在main函数里是UIApplicationMain函数,开启了一个无限循环,以监听该应用。 该UIApplicationMain函数有4个参数,前两个分别是main函数的参数。 第3个参数是UIAppli... 阅读全文
posted @ 2015-03-15 23:19 &王先生 阅读 (109) 评论 (0) 编辑
摘要:@selector(): 可以理解@selector()就是取类方法的编号,他的基本行为类似于C语言中的函数指针(指向函数的指针)。它们通过传递方法的地址(或编号)来实现把方法当做参数的效果。 不过在C语言中,可以直接把一个函数名赋给一个函数指针,但是在OC中不行,而是要通过@selector语... 阅读全文
posted @ 2015-03-15 13:56 &王先生 阅读 (671) 评论 (0) 编辑
摘要:堆的内存管理: 我们所说的内存管理,其实就是堆的内存管理。因为栈的内存会自动回收,堆的内存需要我们手动回收。 栈中一般存储的是基本数据类型变量和指向对象的指针(对象的引用),而真实的对象存储在堆中。因为栈结构的缘故,它是严格地存储在栈数据结构中的,其中数据的生命周期结束后内存都会被回收。此时,对... 阅读全文
posted @ 2015-03-08 18:56 &王先生 阅读 (81) 评论 (0) 编辑
摘要:多态: 封装,继承,多态是面向对象的三大特征。 那多态到底是什么呢? 多态:允许不同的类定义相同的方法,OC能自己判断当前类所对应的方法,不会混乱。 动态类型:程序直到运行时才确定对象的类型。 动态绑定:基于动态类型,程序直到运行时才能确定要执行的方法。 多态:父类的指针可以指向子类的对... 阅读全文
posted @ 2015-03-08 18:54 &王先生 阅读 (227) 评论 (0) 编辑
摘要:KVC: (Key Value Coding) 键值编码 所谓KVC,其实就是不通过set和get方法访问对象属性,而是通过属性名字符串动态的去读取属性。KVC其实也是OC反射机制的一种运用。 之所以每个对象都有KVC能力,是因为NSObject类实现了NSKeyValueCoding协议。 ... 阅读全文
posted @ 2015-03-08 14:01 &王先生 阅读 (142) 评论 (0) 编辑
摘要:OC中的数组:OC中的数组和它的字符串有很多相似之处。也分为可变和不可变。NSArray:不可变数组,一经初始化,便不能再更改;NSMutableArray:可变数组,它其实是继承于NSArray,所以NSArray的方法它都可以用,只不过又拓展了些数组自己操作的方法。NSArray数组的初始化: ... 阅读全文
posted @ 2015-02-26 18:52 &王先生 阅读 (306) 评论 (0) 编辑
摘要:OC中的字符串: C中没有字符串类型,用字符数组和指针代替。 OC中引入了字符串类型,它包括NSString 和 NSMutableString两种 NSString是不可变的,已经初始化便不能更改;NSMutableString是可变的,可以对自己进行修改操作的。这类似于Java里的Stri... 阅读全文
posted @ 2015-02-26 13:34 &王先生 阅读 (74) 评论 (0) 编辑
摘要:strlen()和sizeof()的区别: strlen()——>C字符串库函数,返回字符串的真实长度。它是从内存某位置开始扫描,直到碰到结束符'\0'停止,返回计数器值。 sizeof()——>操作符,返回的是变量声明后“占用”的内存大小,可能不是实际大小。 int num; si... 阅读全文
posted @ 2015-02-25 13:38 &王先生 阅读 (145) 评论 (0) 编辑
摘要:参考资料:博客@protocol,协议: OC中protocol的含义和Java中接口的含义是一样的,它们的作用都是为了定义一组方法规范。 实现此协议的类里的方法,必须按照此协议里定义的方法规范来。 格式:CO中定义协议用@protocol和@end成对使用:@protocol 协议名 ... 阅读全文
posted @ 2015-02-22 15:56 &王先生 阅读 (320) 评论 (0) 编辑
摘要:Category(分类): 当我们在开发过程中要给类添加新的方法时,一般不要去动原类。 再不改动原类的限制下,怎么拓展类的方法?以往我们的做法是新建子类使其继承该类,然后通过子类拓展类的行为。 OC提供了一种全新的方法:Category(分类)。在不改动原类的基础上动态的拓展类的行为。 假如... 阅读全文
posted @ 2015-02-22 03:23 &王先生 阅读 (66) 评论 (0) 编辑
摘要:@class关键字: 在当前类中若要引用其他类的对象作成员变量(Book *book),我们以前采用的方式是 #import "Book.h" 但 #import "Book.h" 的意思是把整个Book.h文件拷贝进来。但是我们的需求是只要告诉编译器Book是个类就行了,所以写#import可... 阅读全文
posted @ 2015-02-22 02:45 &王先生 阅读 (198) 评论 (0) 编辑
摘要:@property的参数: 我们已经知道为了给开发者提供便捷,OC提供了@porperty关键字,它可以自动生成属性的set和get方法。 但是我们又知道,在OC中还面临者对象内存管理的问题,而且我们遵循“谁创建,谁释放”的原则管理内存。 所以我们得重写set方法:把原先的成员变量(对象)re... 阅读全文
posted @ 2015-02-22 02:21 &王先生 阅读 (101) 评论 (0) 编辑
摘要:OC内存管理: 一、引用计数器: Java有垃圾回收机制(Garbage Collection,GC)。也就是说当我们创建对象后,不需要考虑回收内存的事,Java的垃圾回收机制会自动销毁该对象,回收它占用的内存。 但OC没有垃圾回收机制,需要开发者手动销毁创建的对象,收回内存。OC中没有垃圾回... 阅读全文
posted @ 2015-02-21 06:43 &王先生 阅读 (254) 评论 (0) 编辑
摘要:@property和@synthesize: 我们回想一下: 在OC中我们定义一个Student类需要两个文件Student.h 和 Student.m。 Student.h(声明文件):定义成员变量,并且为了使外界可以访问操作这些成员变量,需要定义set和get方法提供给外界。最后还要定义自... 阅读全文
posted @ 2015-02-21 06:34 &王先生 阅读 (142) 评论 (0) 编辑
摘要:自定义构造方法: 我们已经知道创建对象分两步,1:在内存中开辟存储空间,并把地址存储在指针变量里,2:调用指针变量的初始化方法init初始化该对象。Student * stu = [Student alloc];stu = [stu init];在这里,init方法是系统原始的初始化方法,但有时我... 阅读全文
posted @ 2015-02-21 05:05 &王先生 阅读 (261) 评论 (0) 编辑
摘要:点语法: 为了给程序员提供便捷,OC中也引入了点语法。不过它和Java中点语法的意义是完全不同的。 在Java中无论调用任何方法,还是访问public类型的成员变量都是用点语法(.号)。 而在OC中只规定点语法只可以替代set和get方法。 例如。stu.age = 23;它的本质是[stu... 阅读全文
posted @ 2015-02-21 02:33 &王先生 阅读 (228) 评论 (0) 编辑
摘要:类的创建: 与Java不同的是,OC创建一个类需要两个文件(.h和.m文件) 1>xxx.h:声明文件。用于声明成员变量和方法。关键字@interface和@end成对使用。 声明文件只是声明该类里成员变量和方法的格式(返回值类型,参数类型等),并不会实现它们。 在OC中继承用冒号表示,所有... 阅读全文
posted @ 2015-02-21 00:50 &王先生 阅读 (471) 评论 (0) 编辑
摘要:Object-C简介: OC,即Object-C,iOS开发的核心语言。它是基于C语言的,在C的基础上做了面向对象的封装,所以OC是面向对象的语言。同时也因此OC是兼容C的,也就是说在iOS开发中,可以混入C代码,甚至C++代码。语法特点: 1.没有包名的概念: 在Java中,为了防止2个类... 阅读全文
posted @ 2015-02-20 23:23 &王先生 阅读 (63) 评论 (0) 编辑
摘要:Java中有boolean数据类型,”真“为true,”假“为false。而且在if()括号里只能放boolean类型的值。C的基本数据类型和Java的基本一致,但C多了指针类型。指针是C语言的重点。需要注意的是,Java定义全局变量时会自动帮你完成初始化,数字变量会自动赋0,char类型变量会自动... 阅读全文
posted @ 2015-01-11 15:09 &王先生 阅读 (99) 评论 (1) 编辑
摘要:预处理: #include 尖括号表示库文件;#include"xxx" 双引号表示自己写的文件。 #include后面的文件格式允许多种,但若要是"xxx.h"类型的,则称作”头文件“。头文件用来声明函数。 在C里要想使用其他类的函数,必须先在程序开头声明,那我们为了使结构清晰起见,把该... 阅读全文
posted @ 2015-01-11 14:42 &王先生 阅读 (716) 评论 (0) 编辑