【问题标题】:What is need of Class type method?类类型方法需要什么?
【发布时间】:2015-12-23 03:02:00
【问题描述】:

我想知道类类型方法需要什么。每当问到这个问题时,人们都会比较 Class 类型方法和 Instance 方法。什么时候应该使用 Class 类型方法,Class 类型方法比 Instance 方法有什么好处? 如果有人回答我,那就太好了。提前致谢。

【问题讨论】:

  • 你不需要实例来调用类方法,你可以在实例之间共享东西。基本上就是这样。在 Obj-C 中,类方法实际上是一种实例方法,但理解起来更高级。
  • 类方法应该与任何特定实例无关。
  • @MuneeshChauhan 检查下面给出的答案,如果不正确,请通过此链接stackoverflow.com/questions/1053592/…
  • @Sulthan,在 ObjC 中,类方法是相关类的类的实例方法。但是,ObjC 运行时的这个实现细节有点学术,因为它对程序员的日常工作没有影响。对我们来说,它只是一个类方法,就像其他语言中的静态方法一样。
  • @hermann-klecker 不正确。它不是实现细节,它是语言规范的一部分。类方法不是静态方法。区别之一是类方法可以被覆盖。您还可以在类方法中使用 self 。 Swift、Objc、Ruby 等语言与 Java 或 C++ 等语言之间存在概念上的差异。

标签: ios objective-c methods


【解决方案1】:

这是类和实例方法的区别。

类方法

  • 您可以将类方法用于您的常见功能,例如验证、十六进制颜色中的颜色等。并且可以在项目中的任何位置使用,而无需创建该类的实例(称为实用程序类)。

    李>
  • 类方法间接表示静态方法。

  • 无需创建类对象即可调用此类方法。

  • Class 方法以 + in Objective-cclass func in swift 开头。

  • stringWithFormatNSString类的类方法,可以直接使用类名调用(不需要创建NSString的对象)。

    int no = 5;
    NSString *str = [NSString stringWithFormat:@"Some String %d",no];
    

实例方法

  • 您为特定功能(如 setupView 等)创建实例方法,并且必须创建实例来调用它。

  • 实例方法是特定类中的简单方法。

  • 需要创建类的对象来调用这种类型的方法。

  • 实例方法以 - in Objective-cfunc in swift 开头。

  • isEqualToStringNSString 类的实例方法,您只能与NSString 类对象一起调用。

    NSString *str = @"some string";
    NSString *str2 = @"some string";
    Bool isEqual = [str isEqualToString:str2];
    

【讨论】:

  • 很好的解释。谢谢。
  • 在 Swift 中,您将结构上的静态方法与类上的类方法混淆了。静态方法不等于类方法。
  • 我永远不会将类方法用于与实例对象(“实用程序类”)无关的东西。这些是模块。但是类不是模块。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-02
  • 1970-01-01
相关资源
最近更新 更多