Cocoa是苹果公司为Mac OS X所创建的原生面向对象的API,是Mac OS X上五大API之一(其它四个是Carbon、POSIX、X11和Java)。
OS X是苹果公司为Mac系列产品开发的专属操作系统。
Foundation框架:
框架是由许多类、方法、函数、文档按照一定规则组织起来的集合,以便于程序员更方便、迅速的开发程序。
cocoa程序编写主要用到两个框架Foundation和ApplicationKit(UIKIT),其中Foundation框架主要定义了一些基础类,供程序员来使用,而ApplicationKit主要是一些用户界面设计的类,用于Mac开发使用此库。Foundation框架中的类都继承自NSObject对象。
作为通用的面向对象的函数库,Foundation提供了字符串,数值的管理,容器及其枚举,以及一些其他的与图形界面没有直接关系的功能。其中用于类和常数类的“NS”来自于cocoa的来源,NextSTEP,它可以在Mac OS X和iOS中使用
NSObject里面的方法:
isEqual方法://isEqual方法 NSObject *obj1 = [[NSObject alloc] init]; NSObject *obj2 = [[NSObject alloc] init]; if([obj1 isEqual:obj2]){ NSLog(@"obj1 == obj2"); }else{ NSLog(@"obj1 != obj2"); } //或者直接用等号判断 if(obj1 == obj2){ //do something... }else{ //do something... }
而且我试了一下,基本类型用isEqualTo报错,OC不支持基本类型的isEqual判断。
performSelector:
调用本类的方法aaa:
aaa没有返回值时:
【self aaa】;
【self performSelector:@selector(aaa)】;
aaa有返回值,以BOOL为例:
BOOL bool = 【self aaa】;
BOOL bool = 【self performSelector:@selector(aaa)】;
aaa没有返回值,但是需要传入参数(字符串):
-(void)aaa:(NSString *)string;
【self performSelectoc:@selector(aaa:) withObject:@“zifuchuan”】//将zifuchuan传给aaa的形参
aaa需要两个参数:
-(void)aaa:(NSString *)string withName:(NSString *)name;
【self performSelector:@selector(aaa:withName:)withObject:@“zifuchuan1” withObject:@“zifuchuan2”】;
当然了,如果光是为了本类调用那干嘛要这么麻烦呢,主要是为了延迟调用某一个方法,做UI的时候很有用的。
拿-(void)aaa:(NSString *)string;举例
【self perpormSelector:@selector(aaa:):withObject:@“canshu” afterDelay 2.5】;
注意:此处的延迟掉用,代码不会停留在此处
//简单理解让代码停下来
【【NSRunLoop currentRanLoop】 run】;
3.2(isKindOfClass和isMemberOfClass)
isMemberOfClass的用法:是否是某一个类“创建”的
aaa类创建一个对象a
BOOL bool = 【a isMemberOfClass:【aaa class】】; bool为YES,因为a是aaa类创建的。
BOOL bool = 【a isMemeberOfClass:【NSObject class】】; bool为NO,因为a不是NSObject类创建的。
isKindOfClass的用法:判断一个对象是否为某一个类的子类创建的(包含该类自己)
aaa类创建一个对象a
BOOL bool = 【a isKindOfClass:【aaa class】】; bool为YES。
BOOL bool = 【a isKindOfClass:【NSObject class】】 bool为YES。