“->”(箭头运算符)和“.”有什么区别Objective-C 中的(点运算符)?

2024-01-09

在 Objective-C 中,通过使用访问类中的变量有什么区别->(箭头运算符)和.(点运算符)?是->用于直接访问 vs 点 (.)不是直接的吗?


->是传统的 C 运算符,用于访问指针引用的结构的成员。由于 Objective-C 对象(通常)用作指针,而 Objective-C 类是一个结构体,因此您可以使用->访问其成员,这些成员(通常)对应于实例变量。请注意,如果您尝试从类外部访问实例变量,则必须将实例变量标记为公共。

因此,例如:

SomeClass *obj = …;
NSLog(@"name = %@", obj->name);
obj->name = @"Jim";

访问实例变量name,声明于SomeClass(或其超类之一),对应于对象obj.

另一方面,.(通常)用作点语法 http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocObjectsClasses.html对于 getter 和 settermethods.例如:

SomeClass *obj = …;
NSLog(@"name = %@", obj.name);

相当于使用getter方法name:

SomeClass *obj = …;
NSLog(@"name = %@", [obj name]);

If name is a 申报财产 http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProperties.html,可以给它的 getter 方法起另一个名字。

点语法也用于 setter 方法。例如:

SomeClass *obj = …;
obj.name = @"Jim";

相当于:

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

“->”(箭头运算符)和“.”有什么区别Objective-C 中的(点运算符)? 的相关文章

  • 将 Xcode 4.5 新 XIB 文件恢复到 iOS<6

    我已经安装了Xcode 4 5 with iOS6 SDK以及其他用于测试目的的旧 SDK 从 4 3 到 6 0 很美 但是有一个BIG问题 生成一个新的 XIB 文件以兼容 iOS6 这是一个问题 因为我的应用程序需要运行在旧设备 不只
  • xcode“将源编译为”覆盖特定文件

    我有一个项目 必须将 编译源为 值设置为 Objective C 不 根据文件类型 在我的主项目中不起作用 我从框架 特别是 OpenFeint 获得的文件有问题 该文件在编译为 Objective C 时出现编译错误 error poin
  • Objective-C 使用字符串池吗?

    我知道Java https stackoverflow com questions 3801343 what is string pool in java and C http msdn microsoft com en us librar
  • [[NSMutableDictionary alloc] initWithObjects:...] 和 [NSMutableDictionary DictionaryWithObjects:...] 之间的区别?

    仍在学习 Objective C iPhone SDK 我想我知道为什么这不起作用 但我只是想确认一下 In awakeFromNib 如果我使用 NSMutableDictionary alloc initWithObjects 它实际上
  • Apple 如何在机场菜单打开时更新它? (当 NSMenu 已经打开时如何更改它)

    我有一个状态栏项目 可以弹出一个 NSMenu 并且我有一个委托集 并且它已正确连接 void menuNeedsUpdate NSMenu menu工作正常 也就是说 该方法设置为在显示菜单之前调用 我需要监听该方法并触发异步请求 稍后在
  • 如何检测 UISearchBar/UITextField 输入中的暂停?

    我有以下 UISearchbar 代码 void searchBar UISearchBar searchBar textDidChange NSString searchText UIApplication sharedApplicati
  • 如何在 SQLite 中替换字符串?

    如何更新具有以下内容的表列 var mobile 233KKFSDK3234 Documents Page jpg 并将其替换为 Documents Page jpg 在 SQLite 中 注意 所有文字 除了 Documents 是动态的
  • 检查系统时间是自动还是用户设置

    我需要在当前的项目中设置用户证明时间 我围绕这个问题发现了很多不同的问题 但似乎没有一个问题有我正在寻找的答案 这些是我到目前为止看过的问题 XCODE 如何从设备获取 验证准确的时间戳 https stackoverflow com qu
  • NSOperation 中委托的使用

    我正在尝试利用CLLocationManager in an NSOperation 作为其中的一部分 我需要能够startUpdatingLocation然后等到收到 CLLocation 后才完成操作 目前我已经完成了以下操作 但是委托
  • Xcode 4 调试器代码完成

    首先 很高兴他们尝试在 Xcode 4 中的 gdb 命令提示符上完成代码 但在当前状态下 它使得使用命令提示符来调查目标 c 对象几乎不可能 当我打字时 它自动将单词补全为我不想要的内容 并且如果不手动选择文本并将其删除 然后重新开始 则
  • ios 11 - UIBarButtonItem 内的 UIButton 导致自动布局错误

    我在将 UIButton 添加到 UIBarButtonItem 时遇到了一个已知问题 我尝试按照建议添加自动布局约束堆栈溢出 https stackoverflow com a 46336639 505603但我收到如下所述的错误 UIB
  • 在回调函数中调用目标c函数

    如何在回调函数中调用目标c函数 回调函数 static OSStatus inputRenderCallback void inRefCon AudioUnitRenderActionFlags ioActionFlags const Au
  • 如何检索 iPhone 的区域设置

    我用谷歌搜索过它 但令我有点惊讶的是我找不到它 我只想访问设备配置的区域设置 我试图找到如何列出所有系统属性 以防我能在那里找到区域设置 但甚至找不到如何做到这一点 我知道 认为 我之前检索过系统属性 但我也记得在谷歌搜索时找到该信息并不容
  • 动画 UICollectionView 单元格大小更改并重新定位周围单元格

    Goal 以动画方式改变单元格的高度并重新定位周围的单元格 设想 集合视图中的某些单元格会加载远程图像 最初 这些单元格的大小是静态的 并显示活动指示器 加载图像后 会将其添加到其单元格中 并且更改单元格的高度以适合照片 Notes 我正在
  • 如何将自定义 C 代码放入 SwiftPM 包中?

    我正在尝试将 C 代码打包到 Swift 模块中 我们称之为CModule 一旦我将其放入项目的基本文件夹中 Swift模块 并配置了搜索路径 我可以在 Swift 文件中自动完成工作 并检测错误 警告 问题是 导入时它无法识别该模块 并且
  • 更改导航项(栏)的背景颜色

    有没有一种简单的方法可以更改视图顶部导航项的背景颜色 我有一个基于导航的应用程序 我只希望一个视图获得另一种背景颜色 我主要使用 IB 创建视图 我找到了以下解决方案 未测试 float r 10 float g 55 float b 13
  • 如何确定 NSTimeInterval 是否发生在任意 NSDate 期间?

    我有一个 NSTimeInterval 我想知道该时间戳是否位于日期的开始和结束之间 基本上我需要能够做类似的事情 NSDate today NSDate date NSTimeInterval myInterval someInterva
  • AVCaptureDevice 找不到任何设备

    这行代码是我今天遇到的问题 macOS 应用程序 NSArray devices AVCaptureDevice devicesWithMediaType AVMediaTypeVideo 我更新Xcode后 系统总是让我空着devices
  • NSCFData fastCharacterContents 崩溃? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我目前在控制台中收到此崩溃日志 20
  • iOS 视图控制器内存在被关闭后未释放

    当用户单击按钮时 它会显示一个带有两个视图控制器的新选项卡栏视图控制器 我是这样做的 ACLevelDownloadController dvc ACLevelDownloadController alloc initWithNibName

随机推荐

  • TFS 在更改映射时删除了我的文件

    I had这是一个相当大的解决方案 这里有很多代码 由于 TFS 存在一些问题 我想创建一个新的 干净 存储库 我删除了到旧存储库的映射 并尝试创建新映射 这导致了一个错误 即已经存在到我的解决方案的映射 我去了Source Control
  • AJAX 可以从远程服务器请求数据吗?

    我可以在 JavaScript 中使用 XMLHttpRequests 来请求与发出请求的服务器不同的服务器上的文件吗 谢谢 您需要使用一个名为的方法JSONP http remysharp com 2007 10 08 what is j
  • 如果满足条件则停止 Gulp 任务

    我试图做到这一点 因此如果未指定 theme 标志 它会停止 gulp 任务 并想知道以 DRY 方式执行此操作的最佳方法 我希望每个单独的任务在未指定 theme 的情况下停止 并且在不满足条件时也让默认任务停止 到目前为止我已经尝试了一
  • 消除 Visual Studio 解决方案文件夹中的临时文件

    我正在清理一堆来自不同来源的视觉工作室项目 解决方案 并且有数量惊人的临时文件 and 临时文件夹存储在每个溶液中 我想知道哪些文件类型可以安全删除 以便我可以编写一个脚本来处理繁重的工作 这样当我尝试组织整个文件夹结构并将其链接到正确的共
  • 使用 AVFoundation 捕获静态图像

    我目前正在创建一个简单的应用程序 它使用 AVFoundation 将视频流式传输到UIImageView 为了实现这一点 我创建了一个实例AVCaptureSession and an AVCaptureSessionPreset let
  • jQuery:仅在父链接上防止默认

    解决方案 找到了解决方案 使用的父节点 skaftetopmenu li gt a click function e e preventDefault var subid this parentNode attr id if subid f
  • ActiveRecord::Relation#bind 的目的是什么?

    只是出于好奇 我正在阅读的文档关系 查询方法模块 http apidock com rails v3 2 8 ActiveRecord QueryMethods bind并找到了该方法 def bind value relation clo
  • 具有 4 个视图控制器的页面视图控制器 - 如何将视图 2 设置为初始视图控制器?

    我创建了一个带有四个视图控制器的 pageViewController 现在的顺序是 VC1 VC2 VC3 VC4 var pageControl UIPageControl var pendingPage Int lazy var vi
  • 如何取消handler.postDelayed?

    如果我有怎么办handler postDelayed线程已经在执行中 我需要取消它吗 我这样做是为了取消 postDelays 根据 Android 删除回调 http developer android com reference and
  • d3.event.pageX & d3.mouse(this)[0]

    我试图找出 d3 event pageX 和 d3 mouse this 0 之间的区别 我猜两者是相同的 但是 当我 console log 两者时 我的代码中的值与 8 不同 var height 600 var width 600 v
  • 如果用户未使用电子邮件注册,Firebase 身份验证标识符会从 Facebook 登录存储什么值

    如果用户不是使用电子邮件注册而是使用电话号码注册 Firebase 身份验证标识符会从 Facebook 登录存储什么值 我的应用程序提供 facebook 登录 但现在当用户使用 Facebook 登录时 我的 firebase 身份验证
  • ionic框架同步数据并离线工作

    我正在使用 ionic 框架开发一个应用程序 它将从使用 laravel 构建的 API 中获取一些数据 将其保存在数据库中 以便当用户离线时他可以继续使用该应用程序 我对在互联网上找到了一个名为 pouchDB 的插件 是否推荐它满足我的
  • 如何在 Vim 中删除(所需文本)、删除(不需要的文本)和粘贴(所需文本)

    我不知道这是否是一个弱智问题 但这是一个有趣的困境 当我想删除我想放在其他地方的文本 但那个地方有其他一堆我不想要的文本时 我会删除该文本 但在此过程中我复制一个新的剪贴板 以便以前删除的文本消失 有什么建议来解决这个问题吗 一些可能的解决
  • Unity Visual Studio C#版本同步

    我刚刚开始在 Unity 游戏中使用委托和事件在适当的时候更新标签 而不是每帧更新标签 尽管大多数时候没有发生任何变化 为了确保静态事件调用 public static event OnSomething onSomething 实际上有听
  • 容器“gcr.io/google_containers/pause:0.8.0”中的进程做了什么工作?

    我已经清楚地了解了 docker 选项的用法 net container NAME or ID 我还阅读了kubernetes的源代码 了解如何配置容器使用网络InfraContainer 所以我认为唯一在容器中工作的过程gcr io go
  • 如何根据阈值改变字体颜色

    我有一个要求 比如如果阈值大于 6 则文本颜色应显示为红色 在 5 6 之间 文本颜色应更改为黄色 我在第一个要求 iif fields My column value gt 6 red Black 的文本框字体颜色属性中尝试了这个表达式
  • 最有效的方法...唯一的随机字符串

    我需要有效地将 5 个字符的随机字符串插入数据库 同时确保它是唯一的 生成随机字符串不是问题 但目前我正在做的是生成字符串 然后检查数据库是否已经存在 如果存在 我会重新开始 有没有更有效的方法来完成这个过程 请注意 我不想使用 GUID
  • 如何在 keydown 中停止按键事件

    我怎样才能停下来keypresskeydown 处理程序中的事件 即使从 keydown 中也无法停止按键 它们都是非常独立的事件 您可以做的是在读取字符后取消按键 按键 这是我只允许在文本框中输入字母和数字的方法 jQuery urlBo
  • Nuxt Vue 中的 Splidejs

    有没有人尝试过在 Nuxt 中使用 Vue 解决方案作为插件或模块 我在尝试以正确的方式做到这一点时遇到了很多挑战 我正在尝试将 Splide Vue 滑块从 NPM 导入 Nuxt 通过 NPM 安装它后 如何将其导入插件中的 splid
  • “->”(箭头运算符)和“.”有什么区别Objective-C 中的(点运算符)?

    在 Objective C 中 通过使用访问类中的变量有什么区别 gt 箭头运算符 和 点运算符 是 gt 用于直接访问 vs 点 不是直接的吗 gt 是传统的 C 运算符 用于访问指针引用的结构的成员 由于 Objective C 对象