1,对象的存储细节,2,#pragma mark指令,3,函数和对象方法的区别,4,对象和方法之间的关系 ,5.课堂习题

1,对象的存储细节,

  1. 当创建一个对象的时候:Person *p1 = [Person new],做了三件事情:
    1,申请堆内存空间;
    2,给实例变量初始化;
    3,返回所申请空间的首地址;

  2. 实例变量保存在堆区

  3. 对象方法保存在代码区

  4. 一个类可以创建多个对象;

2,#pragma mark指令,

  功能:对代码分组,方便代码查找和导航

  使用格式: #pragma mark -

  #waring 等待处理的功能,或者是未完成的功能

3,函数和对象方法的区别,

  一. 对象方法:
    -(void)run;
    (1)对象方法的实现在@[email protected]中
    对象方法的声明只能写在 @[email protected]中间

    (2)对象方法都以-号开头

    (3)对象方法只能由对象来调用

    (4)函数属于整个文件,可以写在文件中的任何位置,包括@[email protected]中,但写在 @[email protected]会无法识别,函数的声明可以在main函数内部也可以在main函数外部。

    (5)对象方法归对象所有

  二. 函数:
    void run(){
    }
    (1)所有的函数都是平行的
    (2)函数不存在隶属关系
    (3)使用的时候可以直接调用
    (4)不可以访问对象中的成员变量

4,对象和方法之间的关系 ,

  一,对象作为方法的参数
  -(void) displayPerson:(Person *)person{
    NSLog("姓名:%@",person->name);
  }

  二,对象作为方法的返回值
  -(Person *)changePerson:(Person *)person{
    person->name = @"唐僧";
  return person;
}

5.课堂习题

时间: 2024-10-10 21:40:37

1,对象的存储细节,2,#pragma mark指令,3,函数和对象方法的区别,4,对象和方法之间的关系 ,5.课堂习题的相关文章

07:对象的存储细节

1.对象的存储细节 类创建对象,每个对象在内存中都占据一定的存储空间,每个对象都有一份属于自己的单独的成员变量,所有的对象公用类的成员方法,方法在整个内存中只有一份,类本身在内存中占据一份存储空间,类的方法存储于此. 2.isa指针 每一个对象都包含一个isa指针.这个指针指向当前对象所属的类. [p eat];表示给p所指向的对象发送一条eat消息,调用对象的eat方法,此时对象会顺着内部的isa指针找到存 储于类中的方法,执行. isa是对象中的隐藏指针,指向创建这个对象的类. 通过isa指

#pragma mark指令

1.#pragma mark指令的使用 功能:简单来说就是对代码的分组,方便代码查找和导航用的 它们告诉Xcode编译器,要在编辑器窗格顶部的方法和函数弹出菜单中将代码分隔开.一些类(尤其是一些控制器类)可能很长,方法和函数弹出菜单可以便于代码导航.此时加入#pragma 指令(#pragma是一个编译指令)对代码进行逻辑组织很有效果. 一个类里我们总会有一些方法的功能与性质是相差不多的,你可能会有把方法们分组的想法.Xcode已经有了类似的支持,它就是 #pragma mark. 分组: #p

#pragma mark指令的作用

概述: 可以简单地给代码进行一个分组,方便代码的查找(可以不用记,无所谓的小东西) 例如: #pragma mark dog类的声明 @interface Dog :NSObject @end @implementation Dog @end #pragma mark -   //给内容加个空格线 #pragma mark 指令

OC基础复习(二)之对象的存储细节

1.内存分为5大区:栈区,堆区,Bss段,数据区,代码区(排序方式:由高地址-->低地址) 其中注意:栈区对象的地址分配是先分配高地址,再分配低地址,(通俗讲就是在栈区中存的变量,先从地址高的开始往下存) 堆区是从低地址开始分配,再分配到高地址  如下图; 栈区:存储局部变量 堆区:存储程序运行的过程中动态分配的内存空间(通俗的理解就是实例对象,例如:Person *p = [Person new],这块内存空间就是指针变量p指向的这个空间) Bss段:存储未初始化的全局变量和静态变量 数据区:

OC类中一些细节问题(对象类存储、类中结构体的用法)

一:OC中得方法名 注意:方法名冒号和后面的and方法名冒号  都是方法名 一:对象的存储细节 类加载到代码区(包括类中得属性和方法).对象动态加载到堆内存中.指向对象的指针存放在栈区. 三:定义类常见的错误 定义类的时候,常见的错误 1)类的定义不能嵌套 2)不要漏写 @end 3) 不要忘记写实现类(如果忘记写了,编译不会报错,运行时候才报错) 4)定义成员变量的大括号经常漏写 5) 如果不写@interface 只有 @implementation 这可以,但是会报警告,建议不要这么写 6

iOS pragma mark的用法

郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 如果文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额随意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源码下载:点我传送 简单的来说就是为了方便查找和导航代码用的. 下面举例如何快速的定位到我已经标识过的代码. #pragma mark Life Cycle - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the

oc-09-#pragma mark指令的使用,用于查找代码

// 3-[了解]#pragma mark指令的使用,用于查找代码. #import <Foundation/Foundation.h> //声明一个狗类 #pragma mark 声明狗类 @interface Dog : NSObject @end //实现一个狗类 #pragma mark 实现狗类 @implementation Dog @end //声明一个人类 #pragma mark - 对类进行分组 #pragma mark - #pragma mark 声明人类 @inter

java中变量、对象的存储

内容转自网上看到的一篇博文,讲的很不错. 1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆.2. 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器.但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性.另外,栈数据可以共 享,详见第3点.堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再使用的数据.但缺点是,由于要 在运行时动态分配

&lt;03&gt;【掌握】02-应用:类的创建练习+【掌握】03-对象的存储细节+

类名:Person 属性:年龄(_age).体重(_weight) 动作:吃饭(eat)方法.散步(walk)方法 功能:人可以吃各种食物 每次散步,让体重-0.2 #import <Foundation/Foundation.h> //Person类的声明 @interface Person:NSObject { //类的实例变量(属性.成员变量) @public NSString *_name; //姓名 int _age; //年龄 float _weight; //体重 } //定义人