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

2024-04-20

我很难理解这个概念。我直接引用书中的一句话:

类对象还继承自层次结构中位于其上方的类。但因为它们没有实例变量(只有实例有),所以它们只继承方法。

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

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

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

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

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


你错了。

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

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

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Objective-C 中的类对象和实例变量 的相关文章

  • 防止 iOS 上的反射(objc/运行时)

    我正在开发一个处理敏感数据的静态库 使用该库的开发人员必须不能在该库上使用反射 在Android上 我们通过开发一个来解决这个问题aar文件与service并运行service进入单独的进程 当服务运行到另一个进程中时 开发人员不能使用反射
  • Qt 对象的生命周期

    Qt 对象的生命周期是多少 Such as QTcpSocket socket new QTcpSocket 套接字什么时候会被销毁 我应该使用 delete socket 有什么区别吗 QTcpSocket socket 我找不到有关此的
  • 该捆绑包在 Mac OS X 上无效

    我在将应用程序上传到应用程序商店时遇到问题 每次我将应用程序上传到苹果时 它都会显示 无效的二进制文件 因此我尝试在 Xcode Organizer 中验证存档的应用程序 但收到此错误 该捆绑包无效 Apple 目前不接受使用此版本 SDK
  • iOS5 上的 UIImagePickerController 内存泄漏

    我在 iOS5 和 XCode4 2 上开发的应用程序中使用 UIImagePickerController 出现内存泄漏 我不知道为什么会出现这种泄漏 您能给我答案吗 和我的代码 void createImagePicker picker
  • 如何动态构造方法?

    我设计了一个类 它非常标准 具有一些方法属性 class foo def f1 self print f1 def f2 self print f2 def fn self print fn 现在我想创建一个包含一组 foo 实例的类 cl
  • java中类的命名约定 - 全部大写

    在 Java 中 当类全部大写时 如何命名它 例如 如果我想创建一个班级来选择某些人成为 VIP 我应该将类命名为 VIPSelector 还是 VipSelector Thanks 你的两个选择都有效 类的主要目标是让它们以大写字母开头
  • -[NSNull objectForKeyedSubscript:]:无法识别的选择器发送到实例

    我有一个例外 上面写着 NSNull objectForKeyedSubscript unrecognized selector sent to instance 它是否说我正在尝试访问NSNull有钥匙的物体 知道导致此问题的原因以及如何
  • Angular 4 默认单选按钮默认选中

    我试图根据从对象获得的值将单选按钮标记为默认值 它可以是 True 或 False 根据选项 我可以做什么来标记为默认单选按钮
  • 将 NSDictionary 保存到 plist

    我正在使用这篇文章中找到的代码 Plist 中的多个数组 https stackoverflow com questions 6192451 mulitple arrays from plist 6193397 6193397 具有相同的
  • 阻止 WKWebView 中加载的 url 中的广告

    我正在 webView 中加载 url 现在我想阻止 webView 中的 url 中的广告 我怎样才能实现这个目标 webVw loadRequest NSURLRequest requestWithURL NSURL URLWithSt
  • 使用 NSUserdefaults 将数据从一个 ViewController 传递到另一个 ViewController

    我需要将数据从一个 ViewController 传输到另一个 ViewController 这里我在第一个 ViewController 中有多个文本字段 然后它将传递我在 FirstViewController 中输入的任何数据中的 S
  • 如何获取默认的iOS浏览器名称?

    Stack Overflow 应用程序检测到我越狱设置的默认浏览器 Chrome 的名称 我怎样才能在 Objective C 和 Swift 中实现同样的目标 只是名称 不是 ActivityView 代码 Example Update
  • 为什么找不到ImageView类?

    当我转到图形布局时 我在创建第一个 Android 应用程序 pdf Android Application Development for For Dummies 中的静默切换模式 时遇到了麻烦 在 main xml 文件中插入了 Ima
  • setAnnotation - 无法识别的选择器

    点击搜索按钮后在设备上运行时 我收到此错误 但它在模拟器中工作 2013 03 08 17 58 33 981 IPAD 2661 907 Slider values are min 5000 000000 and max 500000 0
  • 使用 use_frameworks 签名错误!和独特的配置文件

    我将最初讨论中的最后一篇文章粘贴到此处 https github com CocoaPods CocoaPods issues 4331 https github com CocoaPods CocoaPods issues 4331 这个
  • 从 Angularjs 应用程序中的 iOS Webview 调用 Javascript 函数

    我的问题是 当我尝试从 UIWebView 中调用 AngularJS 应用程序中存在的 javascript 函数时 该函数无法识别 当我在典型的 html 结构中调用该函数时 该函数会按预期被识别 下面提供的示例 目标 C void v
  • QuickBlox:arm64 架构的未定义符号

    我使用 Xcode 6 4 并使用 cocoapods 安装了 QuickBlox 框架 使用该框架后 我收到一些错误 例如 Undefined symbols for architecture arm64 OBJC CLASS QBSet
  • Object.assign 方法不绑定“this”

    我正在尝试绑定this变量到一个新对象 function Parent sub component constructors this components node function this name jordan subcompone
  • 在现有 HTML 输入字段中加载图像/徽标 - UIWebView

    因为我是编程新手 所以我做了这样的事情 void completeUserFieldsForWebView UIWebView webView withUsername NSString username TextField Which h
  • Actionscript 对象的属性数量

    如何获取通用 Actionscript 对象中的属性数量 如数组长度 您必须循环所有元素才能对它们进行计数 function objectLength myObject Object int var cnt int 0 for var s

随机推荐

  • 您推荐哪种工作流引擎? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在考虑在这个即将到来的项目中使用工作流引擎的想法 我们知道使用工作流引擎有很多注意事项 并且我们在许多平台上拥有丰富的开发经验 因此我
  • C 嵌入式应用程序中 time() 函数的问题

    我在用time 在 ARM 微控制器上 处理器一到达此函数就会重新启动 奇怪的是 当我处于调试模式时 代码运行得很好 但一旦我想将其应用到独立模式 我就会遇到重置 我是否忽略了什么 这个功能有替代品吗 代码部分是这样的 include
  • 对 Promise 中的错误和拒绝感到困惑

    All 我对 JS Promise 还很陌生 当谈到 Promise 链接时 有一个令人困惑的地方 假设我有一个如下的 Promise 链接 var p new Promise function res rej then function
  • 绑定不适用于动态加载的 xaml

    我在用着XamlReader成功加载 xaml 文件并创建FrameworkElement跟 共事 我正在加载的 xaml 中包含绑定表达式 例如
  • 在Windows cmd中以颜色显示用户输入的文本

    我还有一个关于 Windows cmd 的小控制台程序的问题 我使用 colorama 为终端中的文本着色 使其看起来像这样 然后我发现如何为文本着色input 使用一点 hack 的方法 打印没有换行符 如下所示 from coloram
  • CouchDB Java 客户端

    这个维基页面 http wiki apache org couchdb Getting started with Java http wiki apache org couchdb Getting started with Java 列出了
  • AppEnginePlugin:不支持的主要.次要版本 51.0 - appengine 1.9.17

    更新到 Android Studio 1 0 RC 后 我收到此错误 AppEnginePlugin Unsupported major minor version 51 0 既然appengine是用java 1 7编译的 为什么它说不支
  • Chrome 开发工具设置:允许自定义 UI 主题的“实验”选项卡在哪里?

    我使用的是 chrome 36 版本 根据this https chrome google com webstore detail devtools theme zero dark bomhdjeadceaggdgfoefmpeafkjhe
  • 是否有 x64 版本的 MsStkPrp.dll

    我正在将 ATL 控件移植到 64 位 该控件在其属性对话框中使用 Stock 属性页 CLSID StockFontPage CLSID StockColorPage 针对 x64 重新编译后 颜色 和 字体 选项卡丢失 因为 MsStk
  • Java Swing:“优先考虑组合而不是继承”这句话适用吗?

    优先考虑组合而不是继承 这句话适用于 Swing 组件吗 在继续设计 UI 之前 我想收集一些有关该主题的专业意见以及哪些代码更容易维护 优先考虑组合而不是继承 这句话适用于 Swing 组件吗 Yes 我扩展 Swing 组件的唯一一次是
  • R:tuneRF 函数的行为不明确(randomForest 包)

    我对这句话的含义感到不舒服stepFactor的参数tuneRF http www inside r org packages cran randomForest docs tuneRF函数用于调整mtry进一步使用的参数randomFor
  • Android - 解压缩文件夹?

    我的 SD 卡上有一个 zip 文件夹 如何解压缩该文件夹 在我的应用程序代码中 我正在使用 Beginner 方法的修改版本 该方法扩展了 AsyncTask 并可以更新主线程上的观察者 逐字节压缩非常慢 应该避免 相反 更有效的方法是将
  • 将静态宽度垂直子菜单置于动态水平菜单下方

    我已经在这个问题上呆了好几个小时了 我可以找到我想要的各个组成部分 但我似乎无法将它们组合在一起 我遇到的问题是我无法让静态宽度子菜单以它们派生的 li 项目为中心 如果这些父 li 项目具有静态宽度 这应该很容易 但我想根据页面的宽度动态
  • compileSdkVersion 'Google Inc.:Google APIs:23' 和compileSdkVersion 23 之间有什么区别

    在 Gradle build 文件中 我看到一些项目使用 compileSdkVersion Google Inc Google APIs 23 有些只是使用号码 compileSdkVersion 23 两者有什么区别 后一种对于绝大多数
  • Java有using语句吗?

    Java有没有可以在hibernate中打开会话时使用的using语句 在 C 中 它类似于 using var session new Session 因此该对象超出范围并自动关闭 Java 7 推出自动资源块管理 http www in
  • 如何在 fs2 中“拆分”流?

    我想做这样的事情 def splitStream F A stream fs2 Stream F A split A gt B Stream F A Stream F B stream stream map split 但这不起作用 因为它
  • Git 分支从哪里开始以及它的长度是多少?

    我时不时地被问到 git 上的某个分支在什么提交上启动 或者是否在特定分支上创建了某个提交 分支的终点非常清楚 那就是分支标签所在的位置 但是 从哪里开始呢 简单的答案是 在我们的提交中created那个分支 但据我现在所知 这些信息在第一
  • np.linspace 和 np.arange 有什么区别?

    我一直用np arange 我最近遇到np linspace 我想知道它们之间到底有什么区别 查看他们的文档 np arange https numpy org doc 1 18 reference generated numpy aran
  • 如何从 2 个列表中确定最佳组合

    我正在寻找一种方法来使团体中的人员达到最佳组合 让我概述一下情况 假设我们有 A B C 和 D 此外 我们还有组 1 2 3 4 和 5 两者都是示例 可以更少或更多 每个人都给彼此打分 例如 A 对 B 的评分为 3 C 对 C 的评分
  • Objective-C 中的类对象和实例变量

    我很难理解这个概念 我直接引用书中的一句话 类对象还继承自层次结构中位于其上方的类 但因为它们没有实例变量 只有实例有 所以它们只继承方法 如果我错了 请纠正我 但类对象将是这样的 NSString aString NSString all