黑马程序员——类的本质
来源:互联网 发布:linux退出vi模式 编辑:程序博客网 时间:2024/04/30 07:45
黑马程序员——OC基础---类的本质
------- android培训、ios培训、期待与您交流! ----------
内容概括:
1、深入介绍类的核心及本质。
2、类的调用、输出及SEL类型。
类的本质:
1、类本身也是个对象,是class类型的对象,简称类对象。
创建过程
1.class创建出person类对象。
2.再用person类对象创建person类的对象。
2、获取内存中的类对象方法,返回的class对象是同一个类。
1.class c = [p class];
2.class c2 = [p2 class];
3.class c3 = [person class];
3、设在person类中有一个test方法,可通过如下方法调用。
[person test]; // 直接调用person *p = [ [person alloc] init]; // 创建一个类对象后再调用。 Class c = [p class]; // c就是类对象。 [c, test];
类的加载及输出:
1、类的加载:当程序启动时时候,就会加载一次项目中所有的类(也会加载分类),类加载完毕后就会调用+load方法,且只调用一次。
2、类的使用:当第一次调用这个类时,就会调用一次这个类的+initialize方法(如果有分类,优先调用分类的这个方法)。
3、加载顺序:先加载父类,再加载子类(先调用父类的load方法,再调用子类的load方法)。
注意:
1.+initialize 监听类什么时候被使用。
2.类名就代表类对象,每个类只有一个类对象。
类的输出:
可以用NSLog输出类的所有属性吗?那么又该怎样输出。
1、默认情况下,利用NSLog和%@输出对象时,结果是<类名:内存地址>。
2、使用NSLog时,即NSLog(@”%@”, p):
1.会调用对象平p的-description方法。
2.拿到 - description方法的返回值(NSString *)显示到屏幕上。
3.-description方法返回的是“类名 + 内存地址”,为了输出对象的所有属性,要重写 - description方法。
所以类的-description方法决定类对象的输出结果。
示例:
+ (NSString * ) description{ Return @”abc”;}int main(){ NSLog(@”%@”,Person); // 输出结果是abc。}
SEL类型:(方法的包装数据类型)
1、方法都以SEL数据类型存储在类中。
int main()
Person *p = [ [Person alloc] init];
[p test2];
上述代码调用时,内部分为以下三步。
1.把text2包装成SEL类型的数据。
2.根据SEL数据找到方法地址。
3.根据方法地址调用对应的方法。
调用方法的另一种方式。
1、[p performselector : @ selector (test2: withObject :参数)];
2、每个方法都有一个与之对应的SEL数据。
3、根据一个SEL对象就可以找到方法的地址,进而调用方法。
*疑问:本节中方法名的书写
2、SEL对象的创建。
1> SEL s = @selector(test);
2> SEL s2 = NSSekctorFromstring(@“test”);
3> 每个方法内部都有一个SEL数据-cmd,它代表着当前方法。
示例:
#import "Person.h"@implementation Person- (void)test{ // _cmd代表着当前方法 NSString *str = NSStringFromSelector(_cmd); // 调用当前方法,会引发死循环。 // [self performSelector:_cmd]; NSLog(@"调用了test2方法-----%@", str);}- (void)test3:(NSString *)abc{ NSLog(@"test3-----%@", abc);}@end
- 黑马程序员——类的本质
- 黑马程序员——类的本质
- 黑马程序员---类的本质
- 黑马程序员--类的本质
- 黑马程序员-OC-类的本质
- 09.黑马程序员-分类、类的本质
- 黑马程序员---OC类的本质
- 黑马程序员---Objective-C 类的本质
- 黑马程序员——OC基础——分类和类的本质
- 黑马程序员——OC语言——分类和类的本质
- 黑马程序员——OC基础语法—类的本质和SEL类型
- 黑马程序员——8、OC语言(分类、类的本质)
- 黑马程序员—Objective-C基础_分类以及类的本质
- 黑马程序员_OC基础07_类的本质
- 黑马程序员-分类以及类的本质研究
- 黑马程序员--IOS_学习笔记_类的本质
- 黑马程序员一分类,类的本质,description,SEL
- 黑马程序员IOS-OC语言-类的本质、SEL
- Michael Kors Jet Set you can still split an fur to learn how doing this television for computer wher
- Linux -- logrotate 切割 Nginx
- 贝塞尔曲线
- 左旋字符串的一种野路子解法,时间复杂度O(2N)
- 触发器详解
- 黑马程序员——类的本质
- 《unix高级环境编程》终端 I/O——终端 IO 基本概述
- 叠片过滤器:怎样解决输油管和过滤器堵塞问题
- 叠片过滤器:过滤器设备的普遍使用
- 对象继承机制
- thinkphp中的查询技巧总结
- C#获得刚刚插入记录的自增ID
- Nginx RTMP 功能研究
- CentOS 6.6安装Matlab R2014a UNIX版