OC_id类型

 博客正式开通啦!以后会每天为大家更新知识,将过去学习的笔记发布出来。供大家学习交流。

在Objective-C 中,id 类型是一个独特的数据类型。在概念上,类似Java 的Object 类,可以转换为任何数据类型。换句话说,id 类型的变量可以存放任何数据类型的对象。在内部处理上,这种类型被定义为指向对象的指针,实际上是一个指向这种对象的实例变量的指针。例如,下面定义了一个id类型的变量和返回一个id类型的方法:

  1. id object;  
  2. - (id) newObject: (int) type; 

id 和void *并非完全一样。下面是id在objc.h中的定义:

  1. typedef struct objc_object {
  2.  Class isa;  
  3. } *id; 

下面做一个案例来分析id数据类型

学生类的头文件代码Student.h

#import <Foundation/Foundation.h>

 @interface Student : NSObject

{

    NSString *_name;  //定义成员变量name;

    NSString *_sid;

}

@property(nonatomic,strong)NSString *name;

@property(nonatomic,strong)NSString *sid;

+(Student *)studentWithName:(NSString *)name andSid:(NSString *)sid;

-(instancetype)initWithName:(NSString *)name andSid:(NSString *)sid;

-(void)print;

@end

 学生类的实现文件代码Student.m

  1. #import "Student.h"
  2. @implementation Student
  3. -(instancetype)initWithName:(NSString *)name andSid:(NSString *)sid
  4. {
  5.     self = [super init];
  6.     if (self) {
  7.         _name = name;
  8.         _sid = sid;
  9.     }
  10.     return self;
  11. }
  12. +(Student *)studentWithName:(NSString *)name andSid:(NSString *)sid
  13. {
  14. //在类方法中由于还没有创建实例,所有self不能使用
  15.     return [[Student alloc]initWithName:name andSid:sid];//类方法是通过类名使用的,不能创建新的实例变量
  16. }
  17. -(void)print
  18. {
  19.     NSLog(@"name = %@,sid = %@",_name,_sid);
  20. }
  21. @end

测试文件代码main.m

  1. #import <Foundation/Foundation.h>
  2. #import "Student.h"
  3. int main(int argc, const char * argv[]) {
  4.     @autoreleasepool {
  5.         Student *stu = [Student studentWithName:@"zhangsan" andSid:@"123456"];
  6.         [stu print];
  7.         id temp;
  8.         temp = stu;
  9.         [temp print];
  10.     }
  11.     return 0;
  12. }

 结果输出如下:

全部评论

相关推荐

05-05 21:45
已编辑
广州大学 Java
点赞 评论 收藏
分享
积极的小学生不要香菜:你才沟通多少,没500不要说难
点赞 评论 收藏
分享
06-27 12:30
延安大学 C++
实习+外包,这两个公司底层融为一体了,如何评价呢?
一表renzha:之前面了一家外包的大模型,基本上都能答出来,那面试官感觉还没我懂,然后把我挂了,我都还没嫌弃他是外包,他把我挂了……
第一份工作能做外包吗?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务