OC
EaseMob沈冲
这个作者很懒,什么都没留下…
展开
-
protocol
1、协议的定义:@protocol协议名称 //默认遵守NSObject协议//方法声明列表@end;2、遵守协议3、实现协议OC中的协议(protocol)使用注意:1)Protocol:就一个用途,用来声明一大堆的方法(不能声明成员变量),不能写实现。2)只要某个类遵守了这个协议,就拥有了这个协议中的所有方原创 2016-08-04 16:12:26 · 175 阅读 · 0 评论 -
操作缓冲池
缓冲池 => 要解决下载图片操作被重复创建,需求:能够定位到该操作! 什么是缓冲池?-> 容器,能够装一些东西 - NSArray(有序的,通过下标来检索) -> indexPath 下拉&上拉刷新数据,只要一拉,有新数据加入,indexPath就会变化! - NSSet(无序的),取对象 anyObject 可以做什么的缓冲池?UITouch,原创 2017-02-07 17:36:51 · 673 阅读 · 0 评论 -
JSPatch技术文档
一、背景需求介绍为什么我们需要一个热修复(hot-fix)技术?工作中容易犯错、bug难以避免。开发和测试人力有限。苹果Appstore审核周期太长,一旦出现严重bug难以快速上线新版本。作为生产力工具,用户有对稳定性和可靠性的需求。二、JSPatch简介JSPatch诞生于2015年5月,最初是腾讯广研高级iOS开发@bang的个人项目。它能够使用JavaScript调用转载 2016-12-28 10:08:53 · 211 阅读 · 0 评论 -
url中中文字符编码和解码
//编码NSString *urlStrTemp = @"沈冲";NSString *urlStr = [urlStrTemp stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];NSLog(@"%@",urlStr);//解码NSString *urlStrTemp = @"\%E6\%B2\原创 2016-12-06 18:42:09 · 355 阅读 · 0 评论 -
NSDate
NSDate*d = [NSDatedate];NSLog(@"d = %@",d);//设置时区NSTimeZone*zone = [NSTimeZonesystemTimeZone];//设置时间间隔NSIntegerinterval = [zonesecondsFromGMTForDate: d];//重新生成时间NSDate*localeDa原创 2016-08-11 13:37:06 · 136 阅读 · 0 评论 -
NSFileManager
//创建文件管理对象 NSFileManager *fm = [NSFileManager defaultManager]; //1、获取文件的信息 NSString *filePath = @"/Users/apple/Desktop/arr.plist"; //我要获取 文件的信息(大小、创建时间、修改原创 2016-08-11 12:55:56 · 205 阅读 · 0 评论 -
字符串的截取和替换
1、字符串的截取- (NSString *)substringFromIndex:(NSUInteger)from;从指定位置from开始(包括指定位置的字符)到尾部- (NSString *)substringToIndex:(NSUInteger)to;从字符串的开头一直截取到指定的位置to,但不包括该位置的字符- (NSString *)substringWithRange:(N原创 2016-08-04 19:27:14 · 552 阅读 · 0 评论 -
@property关键字介绍及使用
1、基本概念@property是编译器的指令什么是编译器的指令,编译器指令就是用来告诉编译器要做什么@property 告诉编译器声明属性的访问器(getter/setter)方法这样的好处是:免去我们手工书写get和set方法繁琐的代码2、@property用法@property类型 方法名如:@property int age;相当于进行原创 2016-07-23 15:09:50 · 318 阅读 · 0 评论 -
重写构造方法
- (id) init{if(self = [super init]){//为子类增加属性进行初始化}return self;}这里涉及了几个问题,1. [super init]的作用:面向对象的体现,先利用父类的init方法为子类实例的父类部分属性初始化。2. self 为什么要赋值为[super init]:简单来说是为了防止父类的初始化方法release掉原创 2016-07-26 12:52:06 · 971 阅读 · 0 评论 -
设置UITbaBar和UIBarButtonItem的图片有蓝色图层覆盖
设置图片的样式即可controller.tabBarItem.selectedImage = [[UIImage imageNamed:@"image"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];原创 2016-02-20 19:53:32 · 971 阅读 · 0 评论 -
自定义TabBar
自定义TabBar时将系统的TabBar替换为设置的SCTabBar,利用KVC: SCTabBar *tabBar = [[SCTabBar alloc]init]; //利用kvc设置只可读的属性 [self setValue:tabBar forKeyPath:@"tabBar"];原创 2016-02-20 19:57:01 · 239 阅读 · 0 评论 -
关于OC中的static关键字使用
static修饰局部变量:延长布局变量的生命周期static修饰全局变量:当前变量只能在当前文件中使用static修饰函数:函数只能在当前文件中使用原创 2016-07-23 13:54:54 · 400 阅读 · 0 评论 -
description陷阱
千万不要在对象description方法中同时使用%@和self,下面的写法是错误的:- (NSString *)description {return [NSString stringWithFormat:@"%@", self];}同时使用了%@和self,代表要调用self的description方法,因此最终会导致程序陷入死循环,循 环调用description方法原创 2016-07-23 13:56:24 · 196 阅读 · 0 评论 -
@synthesize关键字介绍和使用
@synthesize用法1)@property int age; @synthesize age;表示生成.h中变量age的get和set方法注意;如果@synthesize 变量名要先在.h文件中声明@property int age;.h-(void)setAge:(int)age;-(int)age;.m-(void)setAge:(int)ag原创 2016-07-25 19:23:44 · 307 阅读 · 0 评论 -
动态类型检测
1、动态绑定1)在objective-c中,一个对象内否调用指定的方法不是由编译器决定而是由运行时决定,这被称作是方法的动态绑定。2)在objective-c里,对象不调用方法,而是接收消息,消息 表达式为: [reciver message];运行时系统首先确定接收者的类型(动态类型识别),然后根据消息名在类的方法列表里选择相依的方法执行,所以在源代码里消息也称为选择器(selec原创 2016-07-26 11:48:21 · 323 阅读 · 0 评论 -
ARC
1、ARC工作原理详述 ARC是Objective-C编译器的特性,而不是运行时特性或者垃圾回收机制,ARC所做的只不过是在代码编译时为你自动在合适的位置插入release或autorelease。ARC中的@propertystrong : 用于OC对象,相当于MRC中的retainweak : 用于OC对象,相当于M原创 2016-08-02 23:20:52 · 258 阅读 · 0 评论 -
分类(Category)使用
分类的作用在不修改原有的类的基础上增加新的方法一个庞大的类可以分模块开发一个庞大的类可以由多个人来编写,更有利于团队合作;使用分类的目的1)对现有类进行扩展:比如,你可以扩展Cocoa touch框架中的类,你在类别中增加的方法会被子类所继承,而且在运行时跟其他的方法没有区别。2)作为子类的替代手段:不需要定义和使用一个子类,你可以通过类别直接向已有的类里增原创 2016-08-03 00:23:09 · 1005 阅读 · 0 评论 -
block
1) block最简单形式定义格式:void(^block名)() = ^{代码块;}使用格式:block名();void(^myBlock)() = ^ {NSLog(@"hello");};//执行时,把block当成函数myBlock();2) block带有参数的block的定义和使用原创 2016-08-03 19:32:30 · 268 阅读 · 0 评论 -
GCD与队列
// MARK: - 全局队列/** 开多条线程,不顺序执行! 全局队列本身就是一个并发队列 问题: 一. 全局队列 & 并发队列的区别 1. 全局队列只需要 get * 没有 name 2. 并发队列需要 create * 如果在 MRC 开发,需要自己 release - dispatch_release(q)转载 2017-01-12 13:40:17 · 189 阅读 · 0 评论