美文网首页
instance和id的区别

instance和id的区别

作者: 柏斯特湾 | 来源:发表于2018-07-09 11:25 被阅读14次

相同点:

  1. 都可以表示任何对象类型;

不同点:

  1. id可以用作返回值和参数;instance只能用作返回值类型;
  2. 编译器会监测instance对象的真实类型。

代码比较
id作为返回值类型

+ (id)person {
    return [[self alloc] init];
}

- (id)init {
    if (self = [super init]) {
        NSLog(@"id");
    }
    return self;
}

instance 作为返回值类型

+ (instancetype)person {
    return [[self alloc] init];
}
- (instancetype)init {
    if (self = [super init]) {
          NSLog(@"instancetype");
    }
    return self;
}

创建Person类型对象

/*
 id:编译通过,不会用警告
 instance:提示警告,接收对象的指针类型不匹配
 */
NSString * person = [Person person];

总结:
凡是作为返回值类型时,一律用instance,可以在编译后,发现类型不匹配的对象,避免其他问题。

相关文章

  • instance和id的区别

    相同点: 都可以表示任何对象类型; 不同点: id可以用作返回值和参数;instance只能用作返回值类型; 编译...

  • 2021-09-08

    respondsToSelector和 instancesRespondToSelector区别 instance...

  • type of和 instance of 区别

    JavaScript 中 typeof 和 instanceof 常用来判断一个变量是否为空,或者是什么类型的。但...

  • instance和type的区别

    instance和type都是用来验证某个对象的类型的,它们的区别如下:type()不会认为子类是一种父类类型,而...

  • @+id/和@id/的区别

    这个问题,大家都用过,不知道你们有没有想过@+id/和@id/的区别。我们来看个例子,在说明一下。控件在layou...

  • fx:id和id的区别

    应用场景不同: fx:id用在controller中对控件进行绑定,以便代码中设置控件@FXML Text myW...

  • tomcat|springboot启动慢,Creation of

    Creation of SecureRandom instance for session ID generati...

  • 内存管理总结

    1.id和instanceType区别? 2. id和NSObject区别? 3. id、nil、Nil、NULL...

  • OC中nil、Nil、NSNull和NULL的理解

    nil Defines the id of a null instance.定义空实例的id。 我们给对象赋值时一...

  • iOS开发面试整理

    一、Runtime 1、id、instance id 使用id修饰的对象是动态类型,只是简单的声明了指向对象的指针...

网友评论

      本文标题:instance和id的区别

      本文链接:https://www.haomeiwen.com/subject/tqyzuftx.html