点语法和方括号语法有什么区别?

2023-12-06

我正在经历一些 Objective-C 的演练,其中很多地方都让我大吃一惊。我很想把他们打倒。

  1. 消息发送和方法调用有本质区别吗? Objective-C 让我可以同时完成这两件事:object.message产生相同的结果[object message]。我认为也许无法使用点运算符策略创建嵌套消息?

  2. 我创建了一个NSArray对象,现在我要使用一个打印结果NSEnumerator:

    id myObject = [object objectEnumerator];

    在 while 循环中迭代并打印结果。这type of myObject is id,这意味着它在运行时而不是编译时解析。我非常清楚我的存储中存储了什么样的对象NSArray-他们是NSStrings——所以通过改变类型myObject to NSString * myObject,它工作得很好。然而,我尝试了一下,发现myObject可以是任何类型,无论是NSString or NSArray or NSEnumerator,其中任何一个都工作得很好,完美地迭代了NSArray对象并产生相同的结果。 那是怎么回事?


我不确定您想在“消息发送”和“方法调用”之间做出什么样的区别,因为它们是描述同一事物的两种方式。点语法只是调用 getter 和 setter 的快捷方式,即:

[foo length]
foo.length

完全相同,如下所示:

[foo setLength:5]
foo.length = 5

当您使用 getter 和 setter 时,通常应该只使用点语法;对所有其他方法调用使用方括号语法。

对于你的第二个问题:这就是动态类型的工作原理。您在代码中放入的任何类型声明都是对编译器的提示;只要对象响应,您的 Objective-C 方法调用就始终有效。

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

点语法和方括号语法有什么区别? 的相关文章

  • 没有这样的模块“Ensembles”错误 - 导入 Objective-C 框架以在 swift 项目中使用

    我将 Ensembles 添加到我的 Swift 项目 在这里找到https github com drewmccormack ensembles https github com drewmccormack ensembles 我没能在我
  • 将 NSDecimalNumber 转换为 NSString

    我正在从如下所示的对象中检索密钥 po obj TypeID 3 TypeName Asset 键值的检索方式如下 NSString typeId NSString obj objectForKey TypeID typeId 不是 NSS
  • iOS App Today 扩展未上传到物理设备

    我正在为我的应用程序创建一个今日小部件http budgt ch http budgt ch因为一些用户要求快速访问关键功能 初步 扩展在 iOS 模拟器上运行良好 安装如下 1 安装最新的容器应用程序 2 安装以 今天 为容器的扩展 但是
  • NSMutableArray 实例变量内存管理

    我正在做最后一点内存管理整理 但有些东西我不明白 我已经检查了所有文档 Stack Overflow 等 但仍然不明白 我怀疑这与数组有关 我有一个NSMutableArray作为实例变量 我用它来保存从另一个数组中的对象创建的对象 vie
  • 释放 Core Foundation 对象引用

    我是否需要释放 Core Foundation 对象来清理内存 如果是这样 怎么办 例如 在代码中 ABAddressBookRef addressBook ABAddressBookCreate CFArrayRef peopleArra
  • 当我从我转向的视图控制器返回时,为什么我的 UITableView 的格式完全出错了?

    我有一个UITableView使用自定义单元格 其中有一些标签可以动态决定单元格的高度 当我点击一个单元格并转到一个新的视图控制器时 返回后所有单元格的格式完全混乱 我无法弄清楚是什么导致了它 这是细胞通常的样子 我对它们设置了一些非常基本
  • Objective-C:在哪里定义宏以便随处可用?

    我有一个 iOS 应用程序 它在许多视图控制器中使用相同的字符串 数字等 所以我认为最好在一个文件中定义这些常量并在所有视图控制器实现中使用它 优点是更改一个数字 我只需要做一次 而不是在所有视图控制器中都使用该数字 实际上 我的 h 文件
  • 从 UIImagePickerController 相机视图推送 viewController

    我正在开发一款消息应用程序 类似于 WhatsApp 用户可以互相发送文本和图像消息 当用户想要发送图像时 他可以从相机胶卷中选择一张图像 也可以用相机拍摄一张图像 这就是我介绍的方式UIImagePickerController对于这两种
  • iPhone 应用程序中的异步、同步、线程

    我正处于一个应用程序的设计阶段 该应用程序将利用 REST Web 服务 并且在使用异步 同步和线程方面遇到了困境 这是场景 假设您有三个选项可供深入研究 每个选项都有自己的基于 REST 的资源 我可以使用同步请求延迟加载每个请求 但这会
  • 如何将 UILabel 的值绑定到实例变量?

    我是 mac objective c 的新手 我的问题是 我想知道是否可以将 UILabel 文本绑定到变量 而不必在值更改时手动设置文本 例如 在 Mac OS 上 当我打开新的 Finder 窗口并删除文件时 任务栏中的全局可用空间就会
  • ios水平居中约束问题?

    I am having hard time in learning constraints auto layout in iOS I have used any width any height I have a storyboard sc
  • 如何将 ios7 通用应用程序升级到基于 Xcode 6 的通用故事板应用程序?

    我目前有一个基于 xcode 5 ios 7 的通用应用程序 因此有两个故事板 我正在考虑将其更新到 ios 8 有没有办法 最佳方法将两个故事板迁移到通用的单个故事板 我在 xcode 6 中看不到转换选项 None
  • 水平 UICollectionView 单行布局

    我正在尝试使用以下命令设置简单的水平布局UICollectionView 兜圈子却没有达到预期的结果 所以任何指针或例子将不胜感激 我粘贴经常更改的代码但没有成功可能没什么意义 该图像显示两行 第一行是单个项目 尺寸正确并且在中心正确对齐
  • Mac OS X 上的 .dll 等效项 [重复]

    这个问题在这里已经有答案了 我来自一个Windows背景 我习惯于通过创建 dll 然后分发所有库和文档 因此 如果用户想要使用它 他会添加对库的引用并使用它 但是 在 Mac 中 我正在开发 SDK 并且我想要一种方法creating a
  • 在 iOS 应用程序中拨打电话

    我有一些代码尝试在应用程序中进行调用 但它似乎不起作用 UIApplication myApp UIApplication sharedApplication NSString theCall NSString stringWithForm
  • 有什么方法可以询问方法的名称吗?

    我正在尝试调试我正在开发的 iPhone 应用程序 向各种源文件添加 50 条 NSLog 语句的想法让我感到很兴奋 我想做的是写一对陈述 比如 NSString methodName self methodName NSLog metho
  • 如何删除 UITableView 中的缩进?

    首先 我对此很陌生 我很可能忘记了一些非常简单的事情 问题 我正在制作一个应用程序 在 a 中显示来自 imgur com 的随机图像tableView 由于某种原因 所有单元格都会缩进少量 如下图所示 我摆弄了许多设置storyboard
  • iOS 7 tabBar 横线,如何去掉?

    Apple 在 iOS 7 中的 tabBar 上添加了一条细线 该线应该在 tabBar 和 UI 之间起到阴影或淡入淡出的作用 由于我使用的是定制的 tabBar 这条线非常令人恼火 你如何删除它 请告诉我这是可能的 否则我需要重新设计
  • Glib 在 iPhone 应用程序中的使用

    我想基于现有的开源 Objective C 框架开发一个 iPhone 应用程序 但是该框架广泛使用了 glib 库 我找不到一种方法来构建和包含 iPhone 应用程序的 glib 库 非越狱 有什么办法可以做到这一点 或者有没有推荐的方
  • 使用强光混合模式时突出显示伪影

    我正在 iPhone 应用程序中使用顶部图像的 HardLight 混合模式混合两个图像 它看起来像这样 UIGraphicsBeginImageContext size sourceImage drawInRect rectangle b

随机推荐

  • 无法更改网状中的Python路径

    启动 rstudio 会话时运行的第一行是 library reticulate use python usr local lib python3 6 site packages 然而 当我跑步时py config 它显示仍在使用默认的 p
  • 使用 Objective C 将文本字符串插入 NSTextView 中的光标位置或选择的文本

    我如何使用 Objective C 和 cocoa 使用 Xcode 来做到这一点 我试图在单击按钮时在光标处或用户选择处插入一个字符串 NSTextView 有一个方法 insertText 可以执行您想要的操作 myTextView i
  • 使用 PyQt 动态将项目设置为 QML ListModel

    我有一个代表时间表的 QML 它从数据库获取值 所以我需要插入值ListModel来自我的Python代码 QML 看起来像这样 function append newElement scheduleList model append ne
  • 如何在正则表达式中定义空格(在 awk 中)?

    我想打印里面的文字 例如我有以下字符串 gfdg jkfgh jkfd fdgj fd ghjhgj gfggf kfdjfdgfhbg fhfghg jhgj jhfjhg dfgdf fgf fgfdg dfj jfdg jhfgjd
  • 如何使用Kivy制作ToolTip?

    我想看到工具提示Qt当鼠标指针悬停在图标上时操作栏 是的 我可以使用mode spinner 但图标更好 您可以改进和扩展的一个简单示例 from kivy app import App from kivy lang import Buil
  • 将进程 ID 添加到 log4cxx 中的日志文件名中

    在 log4net 中 我可以轻松地将进程 ID 设置为从配置中轻松记录文件名
  • 无循环求和

    I have following double summation 10 i 1 i j 1 i 5 10 j i 我对这个练习很迷茫 我尝试了下面的代码 但尽管给了我一个数字 但它返回了一个错误 很确定它不正确 任何帮助都非常有价值 i
  • 如何获取 Facebook 视频的观看次数

    我首先使用 facebook graph api 获取全局视频视图 然后我想尝试单独的视频视图 但是当我尝试以下语法时 获取 v2 5 object id insights page video views 我得到这个答案 data pag
  • 用于命名空间扩展的图标覆盖处理程序

    我正在开发命名空间扩展 它提供服务器上文件的虚拟视图 在此视图中 我需要使用覆盖图标提供文件的不同状态 正在使用 离线 不同步等 我阅读了实现覆盖处理程序的文章 并认为我将尝试在我们的覆盖处理程序之一中处理此问题 该处理程序实现 IShel
  • 如何使用Cookie检查用户是否已经登录?

    我想知道如何检测用户是否已经登录 使用cookie 我没有使用任何登录控件 我有一个数据库可以检查 ID 和 PWD 另请告诉我是否可以在不使用 cookie 的情况下完成 任何代码或链接都会有帮助 网络配置
  • Android 下拉颜色选择器

    我想创建一个下拉颜色选择器 如下所示 抱歉图像丑陋 我只需要一些颜色 比方说 6 种 所以我不需要完整的颜色选择器 下拉菜单就可以正常工作 我知道我必须扩展 Spinner 的阵列适配器并覆盖获取下拉视图 and getView 我不知道的
  • 如何从一个文件中读取随机行?

    有内置方法可以做到这一点吗 如果不是 我怎样才能在不花费太多开销的情况下做到这一点 不是内置的 而是算法R 3 4 2 Waterman 的 Reservoir Algorithm 来自 Knuth 的 计算机编程的艺术 很好 非常简化的版
  • 如何从父子表中获取结果

    Work on SQL服务器 我的表结构如下 CREATE TABLE dbo AgentInfo AgentID int NOT NULL ParentID int NULL CONSTRAINT PK AgentInfo PRIMARY
  • 运行命令、流式传输 stdout/stderr 并捕获结果

    我正在尝试使用std process Command运行命令并流式传输其 stdout 和 stderr 同时捕获 stdout stderr 的副本 我发现我可以使用spawn 此代码将捕获输出 但不会在发生时将其流式传输到 stdout
  • 如何修复“没有名为‘app_one’的模块”

    我有一个具有以下结构的 Python 包 gt python package package root directory gt app one subpackage directory gt init py gt views py gt
  • Adobe Air:在不同应用程序之间更改焦点时滚动条会抛出错误

    TypeError Error 1009 Cannot access a property or method of a null object reference at spark components Scroller focusInH
  • 如何平滑 CamShift 中的跟踪

    我正在使用 OpenCV 库函数进行手头跟踪项目 通过使用Camshift 我可以跟踪我的手 但它不稳定 即使我使我的手稳定 跟踪也几乎没有移动 所以我无法在正确的位置执行鼠标单击操作 有人请帮我解决这个问题 void TrackingOb
  • 复制时的 PouchDB/CouchDB 序列计数器

    I am live将新创建的 pouchdb 3 3 1 同步到已建立的 iris couchdb 初始复制成功发生 pause事件被触发 If I do info 在本地 我得到的 update seq 为362 如果我做info 在遥控
  • 如何将c++与字边界匹配

    我想将单词 c 与 Python 3 中的单词边界匹配 但我的猜测是 b 也会在加号上触发 为了清楚起见 我已简化为以下测试用例 bc b 我希望我可以保留单词边界 但以某种方式更改其设置 原因是我想将正则表达式放在 TfidfVector
  • 点语法和方括号语法有什么区别?

    我正在经历一些 Objective C 的演练 其中很多地方都让我大吃一惊 我很想把他们打倒 消息发送和方法调用有本质区别吗 Objective C 让我可以同时完成这两件事 object message产生相同的结果 object mes