关闭

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

115人阅读 评论(0) 收藏 举报


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相同。
内存图分析如下:





















0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1548次
    • 积分:138
    • 等级:
    • 排名:千里之外
    • 原创:13篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档