Objective-C(九、Foundation框架和NSObject类)——iOS开发基础


结合之前的学习笔记以及参考《Objective-C编程全解(第三版)》,对Objective-C知识点进行梳理总结。知识点一直在变,只是作为参考,以苹果官方文档为准~


九、Foundation框架简介和NSObject类


1、Foundation框架
(1)框架由很多类、方法、函数组成的一个类库,便于开发者更方便的开发程序;
(2)Foundation是OC的基础类库;类以“NS”为前缀,便于与其他类区分;
(3)使用此框架需包含头文件#import

2、NSObject类:一切类的根类(基类),所有OC对象都直接或间接地继承NSObject类

(1)根类的作用(摘自《Objective-C编程全解(第三版)》P142):
OC需要编译环境,同时还需要一个运行时系统(runtime system)来执行编译好的代码,其类似OC的操作系统,负责完成对象生成、释放时的内存管理、为发来的消息查找相应的处理方法。
一般程序中无法直接使用运行时系统提供的功能,根类方法提供中提供了运行时系统的基础功能。继承了NSObject的所有类都可以自由地使用运行时系统的功能,根类就相当于运行时系统的一个接口

(2)常用的方法(内存管理的部分在此后内存管理中提出)

- (Class)class;    //返回类对象
+ (Class)class;    //返回类对象,虽然可使用类名作为消息接受者调用类方法,但是类对象是其他消息的参数,或者将类对象赋值给变量时,需要通过此类方法来获取类对象
 - (Class)superclass;   //返回父类对象
+ (Class)superclass;   //返回父类对象
- (BOOL)isMemberOfClass:(Class)aClass; //判断实例对象是否由当前类创建
 - (BOOL)isKindOfClass:(Class)aClass;   //判断实例对象是否由当前类创建或继承自当前类
 - (id)performSelector:(SEL)aSelector;      //判断是否已定义好此方法
 - (BOOL)respondsToSelector:(SEL)aSelector; //通过包装好的SEL来调用方法,还有很多带参数的调用方法

 if ([p respondsToSelector:@selector(func)]) {
 [p performSelector:@selector(func)];
 }   //两个方法最好能一起用调用私有方法,防止出错
 - (BOOL)isEqualTo:(id)object;  //判断两个指针是否指向同一对象,同一块内存区域

比较的还有很多

 @interface NSObject (NSComparisonMethods)
 - (BOOL)isEqualTo:(id)object;
 // Implemented using isEqual:. Returns NO if receiver is nil.
 - (BOOL)isLessThanOrEqualTo:(id)object;
 // Implemented using compare. Returns NO if receiver is nil.
 - (BOOL)isLessThan:(id)object;
 // Implemented using compare. Returns NO if receiver is nil.
 - (BOOL)isGreaterThanOrEqualTo:(id)object;
 // Implemented using compare. Returns NO if receiver is nil.
 - (BOOL)isGreaterThan:(id)object;
 // Implemented using compare. Returns NO if receiver is nil.
 - (BOOL)isNotEqualTo:(id)object;
 // Implemented using compare. Returns NO if receiver is nil.
 - (BOOL)doesContain:(id)object;
 // Returns nil if receiver is not an NSArray or if array doesn't contain object.
 // This operator is not working against the database.
 - (BOOL)isLike:(NSString *)object;
 // argument should be a string using simple shell wildcards (* and ?).
 // (e.g. "Stev*" or "N?XT").
 // Returns NO if receiver is not an NSString.
 - (BOOL)isCaseInsensitiveLike:(NSString *)object;
 @end

等等,根类方法很多,这里只是列举较常用的~

你可能感兴趣的:(Objective-C)