0808

分类的使用注意
  • 分类只可以增加方法,不可以增加成员变量
  • 分类可以访问原来类中声明的成员变量
  • 分类可以重新实现原来类中的方法,但是会覆盖掉原来的方法,会导致原来的方法没法再使用
  • 方法调用的优先级:分类-->原来类-->父类
  • 多个分类包含同一方法的话,看后编译的方法覆盖先编译的方法

类的本质
  • 一个对象或者类本身调用 class 方法都可以获取到内存中的类对象.类在内存中只有一份,类的实例对象,实例化一个就再内存中为该对象分配一份内存.成员变量是和对象在一起的,方法是和类在一起的.
  • 有时我们可以通过一个类已经实例化的对象来获取到该对象所属的类,进而来完成类的alloc和init 如下图:


类的加载过程
  • 先加载父类再加载子类.在类(分类也一样)被加载的时候会调用load方法,当类第一次加载会调用initialize,但如果分类里面也有initialize方法的话则只调用分类里的方法.load方法无论怎么都调用,以为只要程序一启动类就会加载,一旦加载就会调用load方法,只会调用一次,所以load方法是不管类和分类的.并且,加载的时候先加载原始类再加载分类

如下图所示:


deacription方法
  • description 有类方法和对象方法,下面的两点都是对对象的deacription方法来说的.
  • 以我的经验,description可以获取到NSURL对应的NSString类型的url链接地址
  • 我们可以重写description方法来达到我们想输出的内容的目的.调用NSLog(@"%@", p)就会调用description对象方法.所以不要在重写的description方法里调用NSLog(@"%@", p)方法,不然会死循环.

NSLog(@"%@", p)这个是打印指针p所指向的对象的类名+对象地址

NSLog(@"%p", &p)这个是打印指针p的地址

NSLog(@"%p", p)这个是打印指针p所指向的对象的地址

如下图所示:

当调用类的desription方法的时候只会显示类的名称


输出日志增强


SEL(类和SEL都是运行时的一些机制)
  • SEL对应的是方法的地址。一个对象调用一个方法的时候,首先将方法包装成SEL类型的数据,然后根据SEL数据找到对应的方法地址,最后根据方法地址调用对应的方法.调用过方法一次之后SEL就会被缓存,下次再调用的时候就会直接方法找到来执行.

如下图所示:

每一个方法内部都有一个cmd,这个cmd是个SEL类型的,代表当前方法,打印一下即可看出来

如下图所示:

iOS 基础 第三天(0808)的更多相关文章

  1. IOS基础之 (三) 类的声明和对象的创建

    一 OC类的声明和实现语法 1.接口的声明 @interface NewClassName: ParentClassName { 实例变量 ... } 方法的声明 ... @end //...表示省略 ...

  2. iOS 基础 第三天(0807)

    0807 成员变量作用域###### 如下图所示: 这里要注意手写的成员变量/实例变量默认的作用域是private,所以外部指针类型的对象无法直接访问,这起到一定的保护作用.但可以在当前类内部@imp ...

  3. iOS开发UI篇—iOS开发中三种简单的动画设置

    iOS开发UI篇—iOS开发中三种简单的动画设置 [在ios开发中,动画是廉价的] 一.首尾式动画 代码示例: // beginAnimations表示此后的代码要“参与到”动画中 [UIView b ...

  4. iOS基础问答面试

    <简书社区 — Timhbw>iOS基础问答面试题连载(一)-附答案:http://www.jianshu.com/p/1ebf7333808d <简书社区 — Timhbw> ...

  5. XMPPFrameWork IOS 开发(三)登录

    原始地址:XMPPFrameWork IOS 开发(三) XMPP中常用对象们: XMPPStream:xmpp基础服务类 XMPPRoster:好友列表类 XMPPRosterCoreDataSto ...

  6. iOS基础UI控件介绍-Swift版

    iOS基础UI控件总结 iOS基础控件包括以下几类: 1.继承自NSObject:(暂列为控件) UIColor //颜色 UIImage //图像 2.继承自UIView: 只能相应手势UIGest ...

  7. Android测试基础题(三)

    今天接着给大家带来的是Android测试基础题(三).    需求:定义一个排序的方法,根据用户传入的double类型数组进行排序,并返回排序后的数组 俗话说的好:温故而知新,可以为师矣 packag ...

  8. IOS基础学习-2: UIButton

    IOS基础学习-2: UIButton   UIButton是一个标准的UIControl控件,UIKit提供了一组控件:UISwitch开关.UIButton按钮.UISegmentedContro ...

  9. RequireJS基础(三)

    这篇来写一个具有依赖的事件模块event. event提供三个方法bind.unbind.trigger来管理DOM元素事件. event依赖于cache模块,cache模块类似于jQuery的$.d ...

随机推荐

  1. 【Irrlicht鬼火引擎】掌握引擎使用流程,入门程序HelloWorld

    分析 一.简述使用步骤 一般而言,对于一个简单的程序,Irrlicht引擎的一般使用步骤如下: 预处理:(1)包含 <irrlicht.h> 头文件#include <irrlich ...

  2. [改善Java代码]多线程使用Vector或HashTable

    Vector是ArrayList的多线程版本,HashTable是HashMap的多线程版本,这些概念我 们都很清楚,也被前辈嘱咐过很多次,但我们经常会逃避使用Vector和HashTable,因为用 ...

  3. CF 13E. Holes 分块数组

    题目:点这 跟这题BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊  一模一样 分析: 分块数组入门题. 具体的可以学习这篇博文以及做国家集训队2008 - 苏煜<对块状链表的一 ...

  4. 快速启动软件之 Rolan ,你真的会用?

    2015.2.14 很高兴 Rolan 这个软件至今还在更新,并且愈发完善,UI 的设计和功能上的改进都给了我不小的震撼. 如今的 Rolan ,可以对比一下 2014 年的图,变化真的很大有木有: ...

  5. PE制作实录 —— 定义我的 PE 工具箱

    Step 1 想个好听的名字 我倒是没什么文化,洋气点又要方便记忆,最终锁定 Operit! ,源自英语 Operate .it ,合并一下再加上感叹号,洋气吧~ Step 2 利用百草霜制作 Mes ...

  6. Myeclipse中tomcat所应用的JDK设置

    Preferences------ > MyElipse ---------- >Servers ----------- > Tomcat-------- >Tomcat 6. ...

  7. HttpClient(4.3.5) - HttpClient Proxy Configuration

    Even though HttpClient is aware of complex routing scemes and proxy chaining, it supports only simpl ...

  8. IIS部署网站局域网内无法访问

    今天在局域网发布一个网站时遇到了个问题,在本机上可以访问,但局域网内其他机子访问此IP地址时无法显示,这个问题以前也遇到过,现在总结一下处理方法 检查两个方面: IIS网站身份验证 在IIS中选择要发 ...

  9. C# 每天温习一点(IEnumerable<TSource>)

    1, IEnumerable<TSource> 多数屌丝写成  IEnumerable<T>  无论TSource还是T都代表一个意思:要枚举的对象的类型 .IEnumerab ...

  10. 小生功能贴<一> --- 动态添加应用 具有长按删除功能

    ---恢复内容开始--- 动态添加应用 具有长按删除功能 功能如下图:                (图片显示功能不是你要的,那就默默关闭页面吧) 设计思路: 页面一:用girdview网格显示图标 ...