gpt4 book ai didi

objective-c - Objective-C 中的类对象和实例变量

转载 作者:太空狗 更新时间:2023-10-30 03:59:07 27 4
gpt4 key购买 nike

我很难理解这个概念。我将完全引用书中的引述:

Class objects also inherit from the classes above them in the hierarchy. But because they don’t have instance variables (only instances do), they inherit only methods.

如果我错了请纠正我,但是类对象应该是这样的:

NSString *aString = [[NSString alloc]initWithString:@"abc.."];

本例中的类对象是 *aString —— 到目前为止我是否正确?

让我感到困惑的是上面引用的第二句话,“但是因为它们没有实例变量(只有实例有),所以它们只继承方法。”

我认为对象(在本例中为 *aString)是 NSString 类的实例。上面的第二句话暗示实例是不同的。这对我来说没有任何意义。

最佳答案

你错了。

NSString *aString = [[NSString alloc] initWithString:@"abc..."];

在这一行中,我们有,从左到右:

  • 类型:NSString *
  • 变量名:aString
  • 作业
  • 一个:NSString
  • 类方法的调用:+alloc
  • 在类方法的返回值上调用实例方法:-initWithString:
  • 作为参数传递给实例方法的对象:@"abc..."

在 Objective-C 中,Class 实际上是一种对象。您可以通过许多与实例交互的方式与它们交互,但由于它们是“类”,它们不能有实例变量(因为根据定义,实例变量仅用于实例)。 只有方法。它们继承自其他,这就是对象继承的实现方式。

有关这方面的更多信息,请查看 Greg Parker 的这篇精彩博客文章:http://www.sealiesoftware.com/blog/archive/2009/04/14/objc_explain_Classes_and_metaclasses.html

关于objective-c - Objective-C 中的类对象和实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6469770/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com