Objective - C基础: 第四天 - 1.id类型的基本认识
来源:互联网 发布:镜子软件手机版 编辑:程序博客网 时间:2024/05/19 07:10
之前, 我们已经讲了一些关于OC, 还有编译器的一些特性, 比如@property和@synthesize, 这次我们来说说新的特性, 而这个特性就只能运用在OC对象中, 下面让我们一起来看看~~
例子:
#improet <Foundation/Foundation.h>@interface Person : NSObject@end@implementation Person@endint main(){Person *p = [Person new];NSObject *n = [Person new];return 0;}
以往我们创建对象, 都是使用上面这两种创建方式, 一种是直接创建, 一种是多态语法创建, 但今天我们有了第三种创建方式, 那就使用关键字 " id " .
#improet <Foundation/Foundation.h>@interface Person : NSObject@end@implementation Person@endint main(){Person *p = [Person new];NSObject *n = [Person new];id i = [Person new];return 0;}
为什么id也可以创建呢? 其实id在OC中是属于万能指针, 可以操作任何的OC对象.
#improet <Foundation/Foundation.h>@interface Person : NSObject@property int age;@end@implementation Person@endint main(){Person *p = [Person new];NSObject *n = [Person new];id i = [Person new];i.age = 10;return 0;}
这是完全没有问题的, 因为id 这个指针就相当于" NSObject * ", 所以使用id来创建对象, 其实就相当于使用了多态语法.
在函数中也可以使用:
#improet <Foundation/Foundation.h>@interface Person : NSObject@property int age;@end@implementation Personvoid test(id d){}@endint main(){return 0;}
这个的意思就是, 只要你传入的是对象, 无论是什么对象, 一样可以在函数里使用.
当然, 方法也同样可以这么做:
#improet <Foundation/Foundation.h>@interface Person : NSObject@property int age;- (void)test:(id)d;@end@implementation Person- (void)test:(id)d{}@endint main(){return 0;}
成员变量也是如此:
#improet <Foundation/Foundation.h>@interface Person : NSObject@property id age;@end@implementation Person@endint main(){return 0;}
但在成员变量使用id需要注意一些事情, 比如你写的成员变量名是age, 但是你给这个成员变量赋的值却是字符串, 那就不太合逻辑了, 这一点小细节还是需要注意的.
好了, 这次我们就讲到这里, 下次我们继续~~~
0 0
- Objective - C基础: 第四天 - 1.id类型的基本认识
- Objective - C基础: 第四天 - 10.SEL类型的基本认识
- Objective - C基础: 第四天 - 4.类别的基本认识之一
- Objective - C基础: 第四天 - 5.类别的基本认识之二
- Objective - C基础: 第三天 - 1.NSString的基本认识
- Objective - C基础: 第五天 - 1.计数器的基本认识
- Objective - C基础: 第六天 - 1.ARC自动引用计数的基本认识
- Objective - C基础: 第五天 - 7.autorelease的基本认识
- Objective - C基础: 第二天 - 6.关键字self的基本认识
- Objective - C基础: 第六天 - 5.protocol协议的基本认识
- Objective-C id类型
- Objective - C基础: 第四天 - 6.类的本质
- Objective - C基础: 第四天 - 7.类的加载过程
- Objective - C基础: 第四天 - 8.类别的加载过程
- Objective - C基础: 第一天 - 3.BOOL基本认识
- Objective - C基础: 第一天 - 11.OC方法的基本认识
- Objective - C基础: 第一天 - 13.匿名对象的基本认识
- Objective - C基础: 第三天 - 2.点语法的基本认识
- 养生警惕:日常十个小动作让你疾病缠身
- 可移植版本的atol
- 软件设计之UML—UML中的六大关系
- HTTP协议详解
- Asp.Net MVC 路由
- Objective - C基础: 第四天 - 1.id类型的基本认识
- Core Graphics 框架
- [Leetcode]Edit Distance
- mysqldump导出table,view,trigger,routines,events
- Linux负载均衡软件LVS之三(配置篇)
- C语言函数名与函数指针详解
- Fahrenheit convert to centigrade
- impala insert into使用说明
- Android 4.0新增Space及GridLayout初谈