黑马程序员——使用self调用方法时的内存分配

原创 2015年07月09日 09:51:52


1.self在对象方法中使用,指代的是调用当前对象方法的那个对象
(1)Person类的声明
<span style="font-size:14px;">@interface Person : NSObject
-(void)run;
-(void)eat:(NSString*) foodName;
@end</span>
(2)Person类的实现
<span style="font-size:14px;">@implementation Person
-(void)run{
    NSLog(@"人在走!");
}
-(void)eat:(NSString*) foodName{
    NSLog(@"人在吃%@",foodName);
    NSLog(@"%p",self);//打印地址
    [self run];//<span style="font-family: Arial, Helvetica, sans-serif;">self 指代的就是p</span>
}
@end</span>
(3)调用Person类
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //当前对象p 先吃东西,然后再走(吃和走是同一个对象)
        Person *p = [Person new]; 
        NSLog(@"%p",p);//打印地址 
        [p eat:@"油条"];
    }
    return 0;
}
(4)运行结果



分析:从以上打印结果可以看出,self和p相同。
内存图分析如下:





















OC中self的使用

self 和 super 是oc 提供的 两个保留字。 但有根本区别,     self是类的隐藏的参数变量,指向当前调用方法的对象(类也是对象,类对象),另一个隐藏参数是_cmd,代表当前...
  • LVXIANGAN
  • LVXIANGAN
  • 2015年05月11日 23:15
  • 911

内存分配的三种方式

内存分配有三种方式: 一:从全局存储区域分配:这时内存在程序编译阶段就已经分配好,该内存在程序运行的整个周期都有效,如:全局变量、static静态变量。 二:从栈区分配:在执行函数的时候,函数中的...
  • chaoshui7758
  • chaoshui7758
  • 2015年09月03日 14:22
  • 2801

OC之self详解

self是一个指针,用在方法中时,哪个对象调用该方法self指针就指向哪个对象,可以把它当作调用该方法的那个对象的指针一样使用。 #import /*  self的用途:  (1)谁调用了当前...
  • u013378266
  • u013378266
  • 2015年08月31日 14:39
  • 612

懒加载时为什么不能用self直接访问属性

1.错误用法 2.正确用法: 总结:在懒加载时我们有时会忽略这个问题,就是会用到第一种错误的方法.然后就会提示这个错误,那原因何在呢?那下面分析一下  1.我们在调用if语句做判...
  • ZDD1991
  • ZDD1991
  • 2016年12月16日 10:43
  • 376

OC中self和super的使用

1、self用在对象方法中, self指代的是调用当前方法的那个对象,可以调用其它对象方法。...
  • u013977285
  • u013977285
  • 2015年08月27日 17:17
  • 799

Block中weakSelf的使用

著作权归作者所有。 商业转载请联系作者获得授权,非商业转载请注明出处。 作者:隔壁的杨师傅 链接:http://www.zhihu.com/question/34593410/answer/59725...
  • ycz19930423
  • ycz19930423
  • 2015年12月19日 15:05
  • 1970

perl 访问类方法的几种方式

[root@wx03 test]# cat Horse.pm package Horse; use base qw(Critter); sub new { my $invocant = shift;...
  • zhaoyangjian724
  • zhaoyangjian724
  • 2016年05月19日 09:38
  • 518

Python self参数 & 函数详解

一、self参数在Python中,类的方法与普通的函数有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值,Python会提供这个值。这个特别的变量指对象...
  • bing900713
  • bing900713
  • 2017年03月08日 22:45
  • 3840

Objective-C类方法中使用self注意事项

大家需要了解下面的规则: 1,实例方法里面的self,是对象的首地址。 2,类方法里面的self,是Class。类方法不可以使用实例变量,但可以使用self,因为self不是实例变量。此时.self是...
  • hherima
  • hherima
  • 2015年04月14日 09:36
  • 3257

黑马程序员——self使用

------http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 1.设计一个类,...
  • youqianzhenhao
  • youqianzhenhao
  • 2015年08月11日 22:26
  • 67
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员——使用self调用方法时的内存分配
举报原因:
原因补充:

(最多只允许输入30个字)