OC视频笔记3.1(Foundation框架,NSObject里面的方法)3.2(isKindOfClass和isMemberOfClass)

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...  
}  

他的作用就是判断两个指针变量是否指向同一个对象,在OC中他还有一个简单的用法,就是直接使用"=="来进行比较,这两个效果是一样的,但是在Java中是不同的,Java中的"=="是判断两个引用变量是否指向同一个对象,但是其equals方法是判断两个对象的值是否相等(这里的值指的是基本类型,其他对象类型,可以重写这个方法来进行操作)。

而且我试了一下,基本类型用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。


你可能感兴趣的:(OC笔记)