Objective—C
文章平均质量分 79
LIUXUN1993728
这个作者很懒,什么都没留下…
展开
-
KVC 键值编码与KVO键值监听的应用(一)
1、键值编码的基本概念和用法键值编码的基本概念:KVC是KeyValue Coding的简称,它是一种可以直接通过字符串的名字(key)来访问类属性的机制。使用该机制不需要调用存取方法和变量实例就可以访问对象属性。本质上讲,键-值编码定义了你的程序存取方法需要实现的样式及方法签名。 在应用程序中实现键-值编码兼容性是一项重要的设计原则。存取方法可以加强合适的数据封装,而键值编码方法在原创 2015-09-20 16:36:46 · 548 阅读 · 0 评论 -
OC一般类(简单类,组合类,继承关系的子类)的拷贝
1、对于简单的类而言,如果想要实现拷贝操作,就需要先将这个类遵守NSCopying协议,然后代码验证实例如下:新建XYPoint类编辑XYPoint.h如下://// XYPoint.h// aa//// Created by apple on 15/8/8.// Copyright (c) 2015年 liu. All rights reserved.原创 2015-08-20 11:11:57 · 850 阅读 · 0 评论 -
OC可变字符串NSMutableString详解
1、已知NSMutableString继承自NSString,是可变字符串。而NSString是不可变字符串。2、NSMutableString类型字符串的创建:因为它完全继承自NSString,所以NSString的所有方法,它都可以使用。例如:stringWithFormat方法,还有stringWithContentsOfFile,stringWithContentsOfURL等等。原创 2015-08-20 16:43:38 · 877 阅读 · 0 评论 -
OC不可变数组NSArray详解
1、NSSArray(子类NSMutableArray) 、NSSet(子类NSMutableSet)、 NSDictionary(子类NSMutableDictionary)这几个类都是集合类。2、c语言类型的数组只能存放一种类型的数据。为此引入OC数组NSArray,以面向对象的方法操作数据,可以存放各种类型的对象。(只能存放OC对象,不能存放非OC对象类型,例如基本数据类型,结构体,原创 2015-08-20 20:19:43 · 1355 阅读 · 0 评论 -
OC类的深入研究
1、类在创建对象之前也需要加载进空间,也需要占据内存。2、类只会被加载一次。类也是一个对象,但它的类型是Class类型,就是说类本身也是一个对象,是个Class类型的对象,简称类对象。例如新建一个Person类的对象Person *p=[[Person alloc] init];那么p就是Person类型,而Person是个Class类型的类对象。但平时所说的类就是类对象。3、由以上得知,原创 2015-08-19 09:15:05 · 673 阅读 · 1 评论 -
日期类NSDate与日期格式化类NSDateFormatter类的使用
(Java里面的时间都是毫秒,而OC里面的都是以秒为单位)1、创建一个时间对象(1) 产生当前时间NSDate *date = [NSDate date]; 打印的是格林制时间,比北京时间要慢(少)8个小时。(主要原因是此函数打印的是0时区的时间,而北京是东8区,因此要比打印出来的时间快8个小时)。(2)创建比指定时间晚一定时间间隔的时间对象。如下所示:NSDate *date原创 2015-09-03 11:01:02 · 708 阅读 · 0 评论 -
OC协议应用之代理者模式
1、代理简介:代理就是委托别的对象为自己做事情,首先此对象要给别的对象发送消息,即调用别的对象中的成员方法,别的对象根据此对象发送的消息处理后返回一个处理结果给此对象即消息反馈。2、代理类的执行过程(1)一般情况下:一个类委托别的类为自己做事情,是直接将代理类的对象作为自身成员(直接用@property为其设置set/get方法),然后在自己的成员方法中直接调用代理类的成员方法进行实现。原创 2015-08-17 22:15:10 · 564 阅读 · 0 评论 -
OC 之block类型剖析
1、block用来保存一段代码2、block跟函数很像(block变量与函数指针很像)(1)可以保存代码(2)有返回值(3)有形参(4)调用方式相同3、block语法格式: (1)返回值类型 (^block变量名) (参数类型1,参数类型2……)=^(参数类型1 形参1,参数类型2 形参2……){ //代码段....... //返回原创 2015-08-18 20:14:53 · 725 阅读 · 0 评论 -
OC构造函数详解
1、创建对象的两种方法(1)当用“类名 *p=[类名 new]”这种形式创建对象。例如Person*p=[Person new]; 其中的new关键字其实是父类NSObject的一个创建对象的方法,返回值为id类型;可以完整的创建一个可用的对象:1、先分配存储空间 +alloc 2、再初始化 -init new方法就相当于先用类名调用NSObject类的类方法+alloc分配存储原创 2015-08-18 16:08:48 · 4114 阅读 · 0 评论 -
NSString详解
1、Foundation框架中几个重要的类:NSString、NSArray、NSSet、NSDictionary、NSDate、NSObject其中NSString有子类NSMutableString,NSArray有子类NSMutableArray,NSSet有子类NSMutableSet,NSDictionary有子类NSMutableDictionary2、NSString:不原创 2015-08-19 21:16:43 · 2863 阅读 · 0 评论 -
字典NSDictionary与可变字典NSmutableDictionary的用法
1、NSDictionary不可变字典——>子类NSMutableDictionary可变字典 :都是根据一个唯一的标示键来找到的对应的值。字典 Key————>value索引————>文字内容字典内部存放的是键值对2、字典NSDictionary的创建方式:(一旦初始化就不可再修改)(1)创建具有一个键值对的字典方法。NSDictionary *dic=[N原创 2015-08-22 22:50:17 · 3419 阅读 · 0 评论 -
谓词的补充——使用谓词还可以进行正则表达式的验证
NSPredicate 谓词的主要用于以下几个方面: (一)已知数组NSArray都有一个filteredArrayUsingPredicate方法,可以根据指定的NSPredicate对象进行内容过滤。(二) 除此之外Core Data框架中可以为查询请求NSFetchRequest类的对象指定NSPRedicate对象作为查询条件。(三)NSPredicate类还可以使用match原创 2015-10-02 16:49:31 · 511 阅读 · 0 评论 -
通知的具体使用——通知的发送、接受、通知的移除
1、移除观察者身份我们可以通过发送一条指定观察方对象和键路径的removeObserver:forKeyPath: 消息至被观察的对象,来移除一个 键-值观察者,来移除一个键值观察者。(当我们达到目的后)。[child removeObserver:self forKeyPath: @“key”];2、接收变更通知接受变更通知:当对象的一个被观察属性发生变动时,观察者收原创 2015-09-21 21:19:56 · 2162 阅读 · 0 评论 -
KVC 键值编码与KVO键值监听的应用(二)——路径的使用和一对多关系的应用
1、KVC基本用法:设置和访问: 键/值编码中的基本调用包括-valueForKey:和-setValue: forKey:这两个方法,它们以字符串的形式向对象发送消息,字符串是我们关注属性的关键。是否存在setter、getter方法,如果不存在,它将在内部查找名为_key或key的实例变量。通过KVC,可以获取不存在getter方法的对象值,无需通过对象指针直接访问。需要原创 2015-09-20 22:06:06 · 825 阅读 · 0 评论 -
键值观察之KVO——即观察者模式的应用 补充与拓展
addObserver 方法与observeValueForKeyPath方法配套使用 - (void)addObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions)options context:(void *)context;此方法用于为对原创 2015-09-21 15:04:25 · 546 阅读 · 0 评论 -
谓词的经典用法——数组专用过滤器
应用环境:当一个数组容器中有很多相同对象时,如果想按照某种要求对数组容器中的满足条件的对象进行筛选时,有两种方法一 就是最笨的方法遍历数组 用if条件语句进行筛选二 可以用最简洁的方法 就是利用谓词进行筛选过滤谓词的使用方法:1> 先以某种筛选条件进行初始化创建一个NSPredicate类的对象 即NSPredicate *predicate = [NSPredic原创 2015-09-21 23:27:41 · 804 阅读 · 0 评论 -
键值观察之KVO——即观察者模式的应用
KVO的基本概念1、基本概念: Key Value Observing ,直译为:基于键值的观察者。它提供一种机制,当指定的对象的属性被修改后,则对象就会接收到通知。简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了。(常用于监听进度条的值) 与NSNotification不同,键-值 观察中并没有所谓的中心对象来为观察者提供变化通知。取而代之的原创 2015-09-20 23:43:33 · 664 阅读 · 0 评论 -
OC中的字母大小写转换
转载 2015-10-07 09:14:29 · 1643 阅读 · 0 评论 -
正则表达式详解——NSRegularExpression类和NSPredicate类的使用
NSPredicate类 即谓词已将整理过了,在此主要总结学习过的专门用于正则表达式的类即 NSRegularExpression的使用。创建方法如下:+ (NSRegularExpression *)regularExpressionWithPattern:(NSString *)pattern options:(NSRegularExpressionOptions)options原创 2015-10-02 21:37:03 · 3908 阅读 · 0 评论 -
OC 打印结构体的内容
OC结构体(如NSRect,NSSize,NSPoint等)类型的结构体变量不是对象,所以要想整体打印他们内容。必须事先把它们转换为OC字符串类型,常用的方法就是直接使用NSStringFromXxx...方法即可一、NSRagevoid range(){ NSRange range=NSMakeRange(8, 5); NSLog(@"location=%zi",rang原创 2015-10-02 21:12:08 · 2628 阅读 · 0 评论 -
OC 中的分类(Category)详解
1、Category 分类、类别2、分类:可以给某一个类扩充一些方法(不修改原来类的代码)3、分类也分为声明(放在.h文件)和实现(放在.m文件): 分类的声明格式如下@interface 类名(分类名称)//要给类扩充的方法的声明@end分类的实现@implementation 类名(分类名称)//对应的方法实现@end4、分类名一般以模块进行命名原创 2015-08-18 09:45:05 · 971 阅读 · 0 评论 -
OC协议protocol详解
1、protocol协议的基本用途:(1)可以用来声明一大堆方法(不能声明成员变量)(2)只要某个类遵守了这个协议,就相当于拥有了这个协议中的所有方法声明。(3)只要父类遵守了某个协议,就相当于子类也遵守了。注意:协议内仅仅写方法声明,不能写实现,不能写成员变量2、对协议的简单理解:(1)protocol声明的方法可以交给任何类去实现。(2)protocol的作用仅仅就原创 2015-08-17 22:10:51 · 5089 阅读 · 0 评论 -
OC类的小知识点扩充与应注意的细节
1、成员变量的作用域(默认是protected类型):(1)@private:只能在当前类的实现@implementation中直接访问。即只能在当前类的成员方法中直接访问。子类中虽然完全继承了父类成员,但是不能直接访问从父类继承来的私有成员的。切记:子类不能直接访问父类私有成员,但子类仍然拥有父类私有成员。 注意:想在子类中访问父类的私有成员,需要通过为父类私有成员提供的set/get原创 2015-08-16 11:36:06 · 546 阅读 · 0 评论 -
OC中@property的各种属性的使用详解
1 、在obj2.0中可以声明属性让编译器自动合成setter和getter方法:所用关键字:@property和@synthesize。二者需要配对使用。@property是在头文件的类中对setter和getter方法进行声明的,而@synthesize是在.m文件内对声明的方法进行实现的,格式如下:@synthesize 成员名1,成员名2,,, 而在对应的.h文件中@原创 2015-08-10 20:46:09 · 1420 阅读 · 0 评论 -
NSRange范围与集合NSSet简介
NSRange简介:1、Foundation框架是其他所有iOS框架的基础。2、常用的结构体介绍:NSRangeNSPoint\CGPointNSSize\CGSizeNSRect\CGRect3、首先NSRange的介绍进入开发文档:typedef struct _NSRange{NSUInteger location; //位置NSUInteger le原创 2015-08-24 22:55:02 · 839 阅读 · 0 评论 -
IOS路径处理方法
IOS文件路径处理方法常见路径处理方法:+ (NSString *)pathWithComponentsNSArray *)components根据components中的元素来构建路径.- (NSArray *)pathComponents解析路径,返回构成路径的各个部分.- (NSString *)lastPathComponent提取路径中的最后一个组成部分-转载 2015-08-22 16:32:28 · 1045 阅读 · 0 评论 -
将一个或多个OC对象写入文件/从文件读出
利用NSCoding协议中的编码和解码方法进行实现对象实例的文件存储1、过程描述:先将即将写入文件的类遵守NSCoping协议,然后在它的.m文件中添加协议中的-(void)encodeWithCoder:(NSCoder *) aCoder编码方法和-(id)initWithCoder: (NSCoder *)aDecoder解码方法,在实现这些前提之后,就可以调用NSKeyedArch原创 2015-08-21 19:32:42 · 1992 阅读 · 0 评论 -
结构体NSPoint、NSRect、与NSSize或CG开头的详解
1、坐标类NSPoint与CGPoint(1)NSPoint是表示UI元素的坐标的,等同于CGPoint,点击NSPoint进入文档(注意:坐标指组件左上角在屏幕中的坐标,x值从左到右增加,y值从上到下增加)typedef CGPoint NSPoint; 点击CGPoint 进入继续如下:struct CGPoint { CGFloat x; CGFloat y;}原创 2015-08-24 22:51:23 · 2845 阅读 · 0 评论 -
可变数组NSMutableArray详解
1、NSMutableArray可变数组简介:(1)NSMutableArray:是可变数组。创建之后可以进行改变。例如:NSMutableArray *array=[NSMutableArray array];创建了一个空的可变数组。但可以用[array addObject:@“AAA”];[array addObject:[[Person alloc] init] ]; 等方法(2原创 2015-08-23 22:39:02 · 1011 阅读 · 0 评论 -
OC的文件管理类NSFileManager类的使用详解
1、NSFileManager介绍NSManager是用来管理文件系统的它可以用来进行常见的文件\文件夹操作(拷贝、剪切、创建等)NSFileManager使用了单例模式singleon使用defaultManager方法可以获得那个单例对象[NSFileManager defaultManager];单例对象:整个程序运行运行期间只存在一个对象。2、NSFileMan原创 2015-08-22 17:27:42 · 3388 阅读 · 0 评论 -
OC内存管理之—内存释放原则
内存释放原则:谁创建,谁释放;由谁创建,由谁释放;在哪创建,在哪释放;(1)无论声明了几个对象指针,都要一一调用release方法进行解除绑定;创建了哪个指针,就由哪个指针调用release方法。(2)在哪进行对象指针的创建,在执行操作之后就要在同一块{} 即域中进行指针的release方法的调用,在出域之前对它进行释放。(3) 如果一个对象指针所指向的对象中有一个或多个其原创 2015-08-12 11:39:07 · 1735 阅读 · 0 评论 -
objective-c类以及方法调用的基本总结
1 类是对象的类型,对象是类的实例2 成员变量,用来区分同一个类的不同对象。(描述对象的) 静态成员:描述整个类的特征。(描述类的) 非静态成员变量:描述不同对象的特征(描述对象用的) 成员变量可以是各种类型:简单类型、指针、引用、复合类型、其他类 常量成员:必须在创建一个对象的时候,初始化它的常量成员,且常量成员的值不能改变。3 成员函数:用原创 2015-08-10 16:55:46 · 4340 阅读 · 0 评论 -
OC内存管理之—自动释放池
自动释放池1、新版的自动内存释放使用@autoreleasepool关键字声明一个代码块,如果一个对象在初始化时调用了autorelease方法,那么当代码块执行完之后在块中调用autorelease方法的对象都会自动调用一次release方法。这样一来就起到了自动释放的作用,同时对象的销毁过程也得到了延迟(统一调用release方法)。2、也有别的版本使用如下格式建立自动释放池:NS原创 2015-08-12 15:57:24 · 759 阅读 · 0 评论 -
@property命名时的要点与要注意的问题
1、@property命名规范:(1)用@property的命名规范一:在@interface的{}定义“成员类型 _成员名”格式的成员变量,@property 成员类型 成员名;在实现中用@synthesize 成员名=_成员名;访问方式:对象名/self/super . 成员名注意:@synthesize 成员名=_成员名;表示访问的是”_成员名”这个成员变量,且方法名以不原创 2015-08-15 21:25:15 · 1226 阅读 · 0 评论 -
OC中类与对象的使用介绍
1 类如何生成:拥有相同(类似)属性和行为的对象都可以抽象出一个类。类只是一张对象的设计图。2 设计类的有几部分(1) 类名(书写规范)类名的第一个字母必须是大写不能有下划线多个英文单词,用驼峰表示(2)属性(3)行为:哪个对象对行为最清楚,就把行为写到哪个对象中去。3 OC中类的书写格式(1)在OC中,想执行一些行为,就写上一个中括号[行为执行者 行原创 2015-08-15 08:56:13 · 973 阅读 · 0 评论 -
self详解
1、self:是指针,指向调用此方法的当前对象/类。即是谁调用的这个方法,self就指向谁。如果是类调用的这个方法(此方法必须是类方法/静态方法),self就指向类;如果是对象调用的这个方法(实例方法/非静态方法),self就指向这个对象。也就是说如果self出现在对象方法中,self就代表对象;如果self出现在类方法中,self就代表类。2、self指向成员变量—当成员方法中定义的局部变量原创 2015-08-15 09:04:40 · 3191 阅读 · 0 评论 -
封装、类方法及set/get方法的介绍
1、面向对象三大特性:成员变量封装、继承、多态。2、set方法(是保证成员变量封装性的一种重要途径)(1)作用:提供一个方法给外界来设置自身成员值。(2)命名规范: 方法名必须以set开头 set后面必须跟上成员变量的名称,成员变量的首字母必须大写。 返回值一定是void 一定要接受一个参数,而且参数类型要跟成员变量类型一致。 形参的名称不能跟成员变量原创 2015-08-15 09:01:43 · 3017 阅读 · 0 评论 -
OC多态详解
1、多态(多种形态)。实现多态的前提是实现继承,没有继承就没有多态。因为多态的体现形式就是父类指针指向子类对象。常用这种方式:父类名 *p=[子类名 new];2、利用多态,指向子类对象的父类指针能直接调用子类中重写父类的方法。当给指向子类对象的父类指针发送消息时,系统会启动动态检测来判断对象的真实类型,进而调用这个真实类型的方法。3、多态的好处:首先在一个函数中有一个父类指针类型的形原创 2015-08-15 09:09:53 · 1461 阅读 · 0 评论 -
OC的Runtime(运行时)机制的解析
,Objective-C中的Runtime是经常被问到的一个问题,几乎是面试大公司必问的一个问题。当然还有一些其他问题也几乎必问,例如:RunLoop,Block,内存管理等。其他的问题如果有机会我会在其他文章中介绍。本篇文章主要介绍RunTime。RunTime简称运行时。就是系统在运行的时候的一些机制,其中最主要的是消息机制。对于C语言,函数的调用在编译的时候会决定调用哪个函数( C语言的转载 2015-08-14 17:58:00 · 705 阅读 · 0 评论 -
OC继承详解与使用规则
1、OC中如果类A继承类B,B就成为A的父类。那么B的成员全部属于A的成员。相当于A全部拥有了B的所有成员(所有变量与所有方法)。即子类拥有父类中所有的成员变量和方法。2、继承的使用场合:(1)如果有两个或者两个以上的类含有很多相同的成分(成员变量/方法相同)。那么就可以把它们相同的部分提取到一个单独的类中,让这些相似的类继承于它。继承的实质就是把多个类中相同的代码抽出来放到一个单独的类中原创 2015-08-15 09:07:45 · 5778 阅读 · 0 评论