1.description方法是NSObject自带的方法,包括类方法和对象方法

+ (NSString *)description; // 默认返回 类名
- (NSString *)description; // 默认返回 <类名:内存地址>

2.默认情况下利用NSLog和%@输出对象的时返回的就是类名和内存地址

3.修改NSLog和%@的默认输出:重写类对象或者实例对象的description方法即可。因为NSLog函数进行打印的时候会自动调用description方法

/******************************** Person.h文件*********************************/
#import <Foundation/Foundation.h> @interface Person : NSObject + (NSString *)description;
- (NSString *)description; @property int age;
@property NSString *name; @end /******************************** Person.m文件*********************************/
#import "Person.h"
@implementation Person #pragma mark 类对象输出的结果
+ (NSString *)description
{
return @"AAA";
} #pragma mark 实例对象输出的结果
- (NSString *)description
{
// NSLog(@"%@",self); 引发死循环
return [NSString stringWithFormat:@"name = %@ age = %d",_name,_age];
}
@end /******************************** main.m文件***********************************/
#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[])
{
Class c = [Person class];
NSLog(@"%@",c); Person *person = [[Person alloc] init];
person.name = @"John";
person.age = ; // 执行NSLog函数的时候会调用description方法默认返回<类名/对象名: 地址>
NSLog(@"%@",person); }
/**************************** 丰富日志输出 **********************************/
#import <Foundation/Foundation.h>
#import "Person.h" int main(int argc, const char * argv[])
{
Person *person = [[Person alloc] init]; // 打印person对象地址
NSLog(@"%@",person); // <Person: 0x100200ae0>
// 打印person指针的地址
NSLog(@"%p",person); // 0x100200ae0 对象和指针地址一致 // 指针变量的地址
NSLog(@"%p",&person);// 0x7fff5fbff8e8 // NSLog不能%s无法输出带有中文的文件路径,可以用c语言中的printf和%s来代替
// NSLog(@"%s",__FILE__);
printf("%s",__FILE__); // 输出当前方法
NSLog(@"%s",__FUNCTION__); // 返回 main }

iOS 简单总结:description方法\NSLog函数的更多相关文章

  1. js new一个对象的过程,实现一个简单的new方法

    对于大部分前端开发者而言,new一个构造函数或类得到对应实例,是非常普遍的操作了.下面的例子中分别通过构造函数与class类实现了一个简单的创建实例的过程. // ES5构造函数 let Parent ...

  2. 李洪强iOS开发之【Objective-C】07-自定义构造方法和description方法

    知识回顾 在前面已经介绍了如何定义类和创建并初始化对象,比如有Student这个类 1.Student.h 1 #import <Foundation/Foundation.h> 2 3 ...

  3. OC的特有语法-分类Category、 类的本质、description方法、SEL、NSLog输出增强、点语法、变量作用域、@property @synthesize关键字、Id、OC语言构造方法

    一. 分类-Category 1. 基本用途:Category  分类是OC特有的语言,依赖于类. ➢ 如何在不改变原来类模型的前提下,给类扩充一些方法?有2种方式 ● 继承 ● 分类(Categor ...

  4. 类的本质、description方法、SEL、NSLog输出增强

    一.类的本质 1.类也是个对象 其实类也是一个对象,是Class类型的对象,简称“类对象” Class类型的定义 typedef struct objc_class *Class; 类名就代表着类对象 ...

  5. iOS开发-重写description方法,自定义控制台(log)信息

    description是所有类都有的一个方法. 我们重写这个方法,可以自定义实例输出的信息. 比如我们创建一个Person类: 在.h文件中添加两个属性: #import <Foundation ...

  6. 09_传智播客iOS视频教程_自动释放池与NSLog函数

    不要管什么是自动释放池,现在给你讲你也听不懂.就业班才讲,不要知道太多,知道太多对你不好.电影里面死的最惨的人就是知道最多的人.把代码写到自动释放池里面就可以了.NSLog是printf的增强版,它增 ...

  7. 奔五的人学ios:swift竟然没有字符串包括,找个简单的解决方法

    swift关于字符串的推断中 有前导.有后缀 两个方法.竟然没有包括推断. 经过学习找了个简单的解决方法: extension String { func has(v:String)->Bool ...

  8. Scala 方法与函数简单记录

    /** * Scala 方法与函数 * Scala 有方法与函数,二者在语义上的区别很小.Scala 方法是类的一部分,而函数是一个对象可以赋值给一个变量.换句话来说在类中定义的函数即是方法 */ o ...

  9. iOS中--NSArray调用方法详解 (李洪强)

    下面的例子以     NSArray *array = [NSArray arrayWithObjects:@"wendy",@"andy",@"to ...

随机推荐

  1. 《赢在用户:Web人物角色创建和应用实践指南》阅读总结

           本书针对创建人物角色的每一个步骤,包括进行定性.定量的用户研究,生成人物角色分类,使人物角色真实可信等进行了十分详细的介绍.而且,在人物角色如何指导总体商业策略.确定信息架构.内容和设计 ...

  2. 修改mac os分辨率(VMware)

    转自:http://hi.baidu.com/hehonglei123/item/55591c17e7991d582a3e22a1 1. 在Mac系统中安装VMsvga2:VMsvga2_v1.2.3 ...

  3. maven插件开发(二)

    因为很多jar都是在开发环境中,没有到仓库中,因此偷个懒,用命令直接自动安装到仓库去.在开发的过程中遇到一个比较诡异的问题,插件用命令调mvn 安装jar到仓库总是抛如下异常: maven Canno ...

  4. Shell脚本调试工具set

    可以使用set命令的x选项,显示所有命令执行及变量值的变化过程等. 具体使用方法:首先使用set -x开启调试模式,最后使用命令set +x关闭调试模式. 一个简单示例演示如何使用set命令进行脚本调 ...

  5. 关于Service常驻内存不被清理的解决方法.

    众所周知, Service是跑后台的. 但是有些Rom厂商把一键清理做的真是太好用了, 以至于一键清理变成了一种习惯, Service已经变的不再是Service了. 那为什么像诸如360, 微信, ...

  6. SQL SERVER中架构的理解

    在sqlserver 2005中,可能大家在工作或学习的时候会经常发现这样一些问题,你使用一个账户在数据库中创建了一张表,却发现你自己创建的表却没有修改和查询的权限,这是一件很郁闷的事情,在sqlse ...

  7. Yar - Yet Another RPC framework for PHP

    Introduction Yar is a RPC framework which aims to provide a simple and easy way to do communication ...

  8. 双系统下,Windows如何正确删除Linux系统

    一般电脑装了双系统,特别是Windows加Linux的电脑,不可以在Windows中直接删了linux,因为一般安装linux的时候,grub都写进了mbr,直接删了Windows就进不了了,除非原来 ...

  9. BootStrap2学习日记13----关于按钮

    普通按钮 代码: <div style="margin-bottom:15px"> <a href="#" class="" ...

  10. Android 高级UI设计笔记05:使用TextView实现跑马灯的效果

    1. 使用TextView属性实现跑马灯的效果: (1). 新建一个Android工程,命名为"MarqueeTextViewDemo",如下: (2). 来到activity_m ...