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



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





















阅读更多
上一篇黑马程序员——NSString类的用法
下一篇黑马程序员——oc的内存管理
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭