网站页面设计好了后台如何添加,怎样优化自己的网站,设计企业网站多少钱,公司网上注册在哪个网站一、类的深入研究 #xff08;一#xff09;类的本质 类本身也是一个对象#xff0c;是class类型的对象#xff0c;简称“类对象”。 Class类型的定义#xff1a; Typedef struct obj class *class; 类名就代表着类对象#xff0c;每个类只有一个类对象。 利用class 创建…一、类的深入研究 一类的本质 类本身也是一个对象是class类型的对象简称“类对象”。 Class类型的定义 Typedef struct obj class *class; 类名就代表着类对象每个类只有一个类对象。 利用class 创建 Person类 利用Person 创建Person类型的对象 Person *p[[Person alloc] init]; 获取内存中的类对象有两种方法 1class c[p claa];//指向类的对象的指针调用class方法 2Class c1[Person class];//使用类名调用class方法 注意c和c1打印出来的地址相同class c2[p claa];可以证明所有的对象共用一个类方法。 二类的加载和初始化 1.当程序启动时就会加载项目中所有的类和分类而且加载后会调用每个类和分类的load方法只会调用一次 2.当第一次使用某个类时就会调用当前类的initialize方法 3.先加载父类再加载子类先调用父类的load方法再调用子类的load方法最后调用分类的load方法先初始化父类再初始化子类先调用父类的initialize方法再调用子类的initialize方法。 4.注意在初始化的时候如果在分类中重写了initialize方法则会覆盖掉父类的。 5.重写initialize方法可以监听类的使用情况。 二、description方法 description方法包括类方法和对象方法。NSObject类所包含 一基本知识 -description对象方法 使用NSLog和%输出某个对象时会调用对象的description方法并拿到返回值进行输出。 description类方法 使用NSLog和%输出某个对象时会调用类对象的description方法并拿到返回值进行输出把整个对象一次性打印出来打印对象使用%。 使用%打印对象如“%”,P默认打印输出为类名内存地址虽然字符串也是对象但字符串在使用%打印时情况特殊。 那么应该怎么实现打印对象的所有属性呢在类的实现中重写description方法。 二实现打印对象的所有属性 三区别 description方法决定了类对象的输出结果即类本身 -description方法决定了实例对象的输出结果即Person创建的对象。 四打印相关补充 三、SEL SEL:全称Selector 表示方法的存储位置。 方法在内存中是怎么存储的 Person *p[[Person alloc] init]; [p test]; 寻找方法的过程 1首先把test这个方法名包装成sel类型的数据 2根据SEL数据找到对应的方法地址 3根据方法地址调用相应的方法。 4注意:在这个操作过程中有缓存第一次找的时候是一个一个的找非常耗性能之后再用到的时候就直接使用。 关于_cmd:每个方法的内部都有一个-cmd,代表着当前方法。 注意SEL其实是对方法的一种包装将方法包装成一个SEL类型的数据去寻找对应的方法地址找到方法地址后就可以调用方法。这些都是运行时特性发消息就是发送SEL然后根据SEL找到地址调用方法。转载于:https://www.cnblogs.com/xiaodong208/p/4253745.html