黑马程序员-description,NSLog补充以及SEL
来源:互联网 发布:c语言做窗口按钮 编辑:程序博客网 时间:2024/05/16 23:02
description :重写方法,帮助输出对象。
@interface Person
+ (NSString *)description
- (NSString *)description
@property int age;
@property NSString *name;
@end
@implementation
//决定了实例对象的输出结果
- (NSString *)description
{
//NSLog(@"%@",self);死循环重复调用description方法。
return [NSString stringWithFormat:@"age=%d,name=%@",_age,_name];
}
//决定了类对象的输出结果
+ (NSString *)description
{
return @"sdfasdf";
}
@end
int main()
{
Person *p = [[Person alloc] init];
NSLog(@"%p", p);//不要画蛇添足的将p写成&p。打印的是对象地址
NSLog(@"%p", &p)//打印的是指针变量的地址,而不是存储的对象地址。
NSLog(@"%@", p)//<类名: 对象地址>注意前面都有空格。
p.age = 20;
p.name = @"jack";
//默认情况下,利用NSLog和%@输出对象时,结果是:<类名:内存地址>
//会调用对象p的-description方法
//拿到-description方法的返回值(NSString *)显示到屏幕上
//-description放阿飞默认返回的是类名:内存地址
NSLog(@"%@",p);
NSString *name = @"Rose";
NSLog(@"%@",name);
Class c = [Person class];
//输出Person,调用+description方法
//拿到+description方法的返回值(NSString *)显示到屏幕上
NSLog(@"%@",c);
rerurn 0;
}
NSLog的输出补充:
NSLog(@"%d",__LINE__);//当前代码的行号.两个下划线
//NSLog(@"%s",__FILE__);
//NSLog输出C语言字符串的时候,不能有中文
//输出源文件的名称
printf("%s\n",__FILE__);
//输出当前函数名
NLSog(@"%s",__fun__);
SEL
:一个SEL类型的数据就代表一个方法
@interface Person : NSObject
+ (void)test1;
- (void)test2;
- (void)test3:(NSString *)abc;
@end
@implementation
- (void)test3:(NSString *)abc
{
//隐藏了一个SEL数据即_cmd代表了当前方法
NSString *str = NSStringFormSelector(_cmd);
//死循环
//[self performSelector:_cmd];
NSLog(@"test3---%@", str);
}
@end
int main()
{
Person *p = [[Person alloc] init];
[p test2];
//performSelector:(SEL)
//创建SEL数据@selector()
//间接调用test2方法
[p performSelector:@selector(test2)]
/*
SEL s1 = +test地址
*/
//1,把test2包装秤SEL类型的数据
//2.根据SEL数据找到对象的方法地址
//3.根据方法地址调用对应地址
//[p test:@"123"]
//[p performSelector(SEL) withObject:(id)]
[p performSelector(test3:) withObject:@"123"];
SEL s = @selector (test3:);
[p performSelector:s withObject:@"123"];
NSString *name = @"test2";
SEL s = NSSelectorFormString(name);//将一个字符串转成SEL数据
[p performSelector:s];
return 0;
}
/*
SEL其实是对方法的一种包装将方法包装秤一个SEL类型的数据,去找对应的方法地址,找到方法地址就可以调用方法。
其实消息就是SEL
*/
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------详细请查看:www.itheima.com- 黑马程序员-description,NSLog补充以及SEL
- 黑马程序员----objective-C description NSLog SEL
- 黑马程序员-- ID init(构造方法) Class NSLog description SEL
- 10.黑马程序员-description方法、SEL
- 黑马程序员---description方法(NSLog输出)
- oc - 6 description NSLog(扩展) SEL
- 黑马程序员 _8 OC基础 id description sel的使用
- 13、黑马程序员-OC语言description方法和sel
- 黑马程序员一分类,类的本质,description,SEL
- 黑马程序员——几个NSLog的输出功能补充
- ios description对NSLog的使用补充
- 黑马程序员--Object-C--05--id、构造方法、类的深入研究、description、SEL
- 黑马程序员07--Object-C--05--id、构造方法、类的深入研究、description、SEL
- 黑马程序员——OC语言------OC特有语法:分类、description、类对象、SEL
- 黑马程序员——OC语言——description和SEL
- 黑马程序员——OC基础——category、description和SEL
- 黑马程序员——OC基础---核心语法(id,构造方法,Category,description,SEL)
- 黑马程序员------SEL
- 黑马程序员 ---c语言函数的使用
- iOS 8 之 Widgets
- unity3D 用RenderTexture截图
- hdu 2181
- Linux, dig/host/nslookup:command not found
- 黑马程序员-description,NSLog补充以及SEL
- 【字符串】萌萌哒的manacher算法
- 以新插入磁盘作为grub启动盘修改方法
- 无聊看了PHP的加解密
- (原创)学习过程中遇到了不清楚的方法关于StringUtils中 isNotEmpty 和isNotBlank
- Intel 主板 USB 3.0 XHCI控制器端口配置
- 数组 【java笔记】
- 什么是socket(网络大神略过,网络小白比如我进)
- Codeforces Round #FF (Div. 2)446A - DZY Loves Sequences(最长上升子序列变形)