黑马程序员技术交流社区
标题:
id指针_总结
[打印本页]
作者:
huh
时间:
2015-12-8 23:04
标题:
id指针_总结
是什么?
是个指针,这个指针的类型是id类型!
有什么用?
可以表示任意的oc对象的指针!等同与NSObject *;
id obj = [Person new];//父类指针,指向子类对象!
怎么用?
id obj=[Person new];;
用的时候注意什么?
Cat.m
#import "Cat.h"
@implementation Cat
-(void) add:(id)ts{
NSLog(@"id可以当参数传入进来!%@",ts);
}
@end
Person.h
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property NSString *name;
@property id mid;
@end
Person.m
#import "Person.h"
@implementation Person
@end
main.m
/*
id指针的用法
是一个指针.这个指针的类型是id类型.
作用:
可以表示任意的OC对象的指针--万能指针.等效于:NSObject *;
id指针可以当做参数使用
id指针可以当做属性使用
注意:
1.id不用加*.其里面已经封装好了.相当于id ==NSObject *
2.id访问指向对象的方法,不需要强转.
3.id访问指向对象的属性时候,需要强转!
好处:
扩展性很强.
1.id指针可以直接调用子类的方法
2.id指针可以当参数来用!
3.id指针可以当属性来用!
3.当一个对象的类型不确认时,或一个指针指向的对象类型有多种时,id可适用.
*/
#import <Foundation/Foundation.h>
#import "Person.h"
#import "Cat.h"
int main(int argc, const char * argv[]) {
//多态,父类指针指向子类对象
NSObject *obj = [Person new];
//只能强转为子类
((Person *)obj).name = @"huh";
NSLog(@"姓名:%@",((Person *)obj).name);
//id可以直接调用子类的方法
id iobj = [Person new];
[iobj setName:@"DDD"];
NSLog(@"姓名:%@",[iobj name]);
//id可以当属性来用,
//id 当属性用,可以是百变类型!
//当一个类型不确定时,可以用id(也就是说,我不知道,要赋什么值过来的时候)
Person *pr = [Person new];
pr.mid = @"huh3";//赋值,NSString
// pr.mid = [Car new];//赋值,对象
pr.mid = pr; //赋值,实例化对象
((Person *)pr.mid).name = @"id属性";
//id访问指向对象的属性时候,需要强转!
NSLog(@"姓名:%@",((Person *)pr.mid).name);
//id可以当参数
Cat *ct = [Cat new];
[ct add:@"huh,haha"];
return 0;
}
复制代码
作者:
核酸的双链
时间:
2015-12-9 00:32
赞赞赞赞赞
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2