oc基础知识

本文详细解析了Objective-C中-description及+description方法的作用及实现原理。通过实例演示了如何重写这两个方法来定制对象及类的输出形式,并强调了在-description中避免使用self的重要性。
摘要由CSDN通过智能技术生成

                  基 础 知 识 ( description )

- description 是对象方法, 只有在打印对象的对象方法的时候使用。

Person * p  = [[Person alloc] init];

p.age = 20;

p.name = @"jack"

NSLog(@"%@",p);

默认情况下,利用NSLog 和@ 输出对象时 ,打印出的结果是 <类名  内存地址>

因为:

1,会先调用对象p的 - description 方法

2,拿到 - description 方法的返回值 (NSString *)类型 显示到屏幕上

3,- description 方法默认返回的是 <类名 内存地址>

所以:重写-description 方法,后就会覆盖掉原来的内容 ,显示你所输入的内容的属性。

- NSString* descirption

{

      return = NSString stringWithFormat : @"age =%d ,name =%d",_age, _name;

}

注意:不要再 -description中尝试输入self,可引发死循环。

 

+description: 

1,当你尝试输入一个类的时候,它会优先去调用这个类的+descirption方法。

2,拿到+description的返回值(NSString *) 显示到屏幕上。

3,+description默认返回 类名。

int main()

{

         class c = [person class];

         NSLog(@"%@",c);

}

结论: _descirption 决定了实例对象(成员变量)的输出结果。

            +descriptio决定了类对象的输出结果。

补充: 

Person *p = [[Person alloc] init];

NSLog(@"%p",p);  打印p 内存地址。

如果给p 加上& 。&p 就代表着取出 指针变量自己的地址。而不是他所指向的地址。

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值