公开阅读,“私人”保留财产

2023-12-26

创建对公共只读且对“私有”读/写的属性的最佳方法是什么?我可以创建一个只读方法并在 .m 文件中的无名扩展名中声明该属性,但最好我想保留点符号。


在您的公共界面中,声明该属性为只读,即

// Foo.h
@interface Foo
{
@private
    Baz* bar;
}
@property (readonly, retain) Baz* bar;

@end

在您的实现中,您可以声明一个类扩展 http://developer.apple.com/library/ios/documentation/cocoa/Conceptual/ObjectiveC/Chapters/ocCategories.html#//apple_ref/doc/uid/TP30001163-CH20-SW2,然后重新声明属性读/写:

// Foo.m

@interface Foo() // Note parentheses

@property (retain) Baz* bar;

@end

@implementation Foo

@synthesize bar;

@end

上面的意思是 setter 和 getter 都会被创建,但是在包含 header 的文件中,只有 getter 是已知的。缺点是 setter 确实存在,因此如果您忽略编译器警告并在 Foo.m 之外使用 setter,它仍然可以工作。

然而,与仅声明只读属性并直接访问 ivar 相比,优点是您不必手动实现 KVO,当然,内存管理会自动为您完成。

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

公开阅读,“私人”保留财产 的相关文章

  • 如何清除代码中的 NSLog 输出?

    有没有办法清除代码中的控制台输出 thanks 我喜欢的快捷方式 Simply USE K Keyboard Shortcut when you want to clear the NSLOG Data
  • 更改导航项(栏)的背景颜色

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

    我有一个 NSTimeInterval 我想知道该时间戳是否位于日期的开始和结束之间 基本上我需要能够做类似的事情 NSDate today NSDate date NSTimeInterval myInterval someInterva
  • ARC 不允许将 Objective-C 指针隐式转换为“void *”

    这意味着什么 我有什么选择 ARC 不允许将 Objective C 指针隐式转换为 void 我正在将 Xcode3 项目移植到 iOS5 它使用 AudioSessionInitialize 如下 AudioSessionInitial
  • 沙盒尝试恢复消耗性 IAP

    我一直在尝试在 iOS 上测试一些消耗性 IAP 但遇到了一个奇怪的错误 弹出一条警报 其中包含以下文本 此应用内购买已被购买 它将恢复为 自由的 环境 沙盒 我已经检查过 并且确定我的 IAP 可以在 iTunesConnect 中使用
  • ios 在后台处理推送通知

    我想保存应用程序处于后台状态时到达的推送通知 我知道关于 void application UIApplication application didReceiveRemoteNotification NSDictionary userIn
  • NSCFData fastCharacterContents 崩溃? [关闭]

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

    我想将图像添加到 UIButton 并且还想缩放图像以适合 UIButton 使图像变小 请告诉我该怎么做 这是我尝试过的 但它不起作用 将图像添加到按钮并使用setContentMode self itemImageButton setI
  • 在 Swift 中使用 CommonCrypto 解密时出现问题

    我在一家Swift only加密 解密Extension for String and NSData 并且 crypt 部分的工作基于 Zaph 在链接问题中提供的答案 在 Swift 中使用 CCCrypt CommonCrypt 时出现
  • 无法在 Windows 上使用 Gnustep 编译 Objective C

    嗨 我是初学者 学习目标c 我发现错误 hello m 1 34 Foundation Foundation h 没有这样的文件或目录 我开始知道我需要制作一个 make 文件 我可以知道如何制作 make 文件吗 无需创建 makefil
  • 我如何获取用户的电子邮件? iPhone SDK

    我需要获取 Mail app 中使用的用户的电子邮件地址 如何使用 iPhone SDK 做到这一点 谢谢你 简短的回答 你不能 如果需要 您应该提示用户输入电子邮件地址
  • 在 swrevealcontroller 之前实现登录屏幕

    我刚刚开始学习 IOS 开发 我已经按照给定的在线教程成功实现了 SWRevealViewController 一切都按预期工作 然后 我决定添加一个登录屏幕 这将是应用程序运行时用户看到的第一个页面 我采取的步骤如下 将 UIViewCo
  • 如何使用MKMapView完成加载委托,可能的“完成显示”委托?

    当用户在选择注释后点击 保存 时 我尝试保存地图视图的缩略图 当用户尚未放大该注释时会出现问题 因此尚未加载关闭缩放级别 这就是用户点击保存后我正在做的事情 将布尔值 saving 设置为 true 居中并放大注释 无动画 当调用mapVi
  • iOS 10 的错误? NSDate 日本地区时间描述和 24 小时休息

    这似乎是 iOS 10 的一个错误 在 iOS 8 和 9 中都可以 NSDate date description 的小时描述是错误的 它附加了 24 小时描述和 12 小时描述 我没有使用 NSDateFormatter 只是默认设置
  • Objective-C / C 给出枚举默认值

    我在某处读到过关于给枚举默认值的内容 如下所示 typedef enum MarketNavigationTypeNone 0 MarketNavigationTypeHeirachy 1 MarketNavigationTypeMarke
  • 玻璃效果 UIView

    我想知道如何在 UIView 上添加玻璃效果 我想像这样的效果 http pttrns com pickers detail 0dc9d9f6c6a7577613b3453768eee3b3在灰色半透明视图上 您 可以在这里看到 Thank
  • 确定 NSView 是否绘制的正确方法

    有没有正确的方法来确定是否NSView实际上是否在当前视图层次结构中绘制 考虑以下情况 视图完全在屏幕外 不是强制性的 该视图不在视图层次结构的顶部 The isHidden and isHiddenOrHasHiddenAncestor不
  • 线程 1:信号 SIGABRT - AppDelegate.h

    main m Journey Created by Julian Buscema on 2014 07 13 Copyright c 2014 Julian Buscema All rights reserved import
  • PrepareForSegue之谜

    我在两个不同的 VC 中有一个prepareForSegue 方法 一个使用一个if声明 而另一个旨在使用switch 除了名称之外 代码几乎相同 这个效果很好 void prepareForSegue UIStoryboardSegue
  • 我可以知道 requireGestureRecognizerToFail 到底会做什么吗?

    谁能告诉我下面的代码行到底会做什么 我已经提到过Apples https developer apple com library ios documentation uikit reference UIGestureRecognizer C

随机推荐

  • 自动弹出标题,无延迟

    是否有机会执行 js onclick 函数 如果有人自动单击该图标 则会显示标题文本 或者当有人将鼠标移到其上时 标题将立即显示 现在元素的标题会在 1 秒后出现 你可以试试这个 纯css 没有js HTML div class hover
  • 什么是可标记元素?

    我已经阅读无障碍 http www w3 org TR aria in html fifth rule of aria use我偶然发现了一个我找不到准确信息的概念 HTML 可标记元素 我知道可标记元素背后的概念是可以由
  • 检查文件是否包含光栅或矢量元素? (pdf、eps、ai)

    有没有办法检查文件中是否包含光栅元素 我有兴趣对 pdf eps 和 ai 格式执行此操作 如果文件只是矢量 我将其转换为 svg 如果它有一些光栅元素 我必须将其转换为 png 文件 我正在使用 PHP 但我也可以使用任何命令行工具 例如
  • dict.viewkeys() 返回的数据类型是什么? [ 蟒蛇 2.7 ]

    我在学习dict viewkeys 今天 我发现我的python调用了它dict keys目的 我可以将其视为可迭代对象 但它不是生成器 因为我可以多次迭代它 以我有限的知识 我只知道String int float list dict t
  • html5画布kineticjs事件

    我似乎在使用事件获取时遇到问题动力学JS http kineticjs com以 1 或更小的行程在 Kinetic Line 上开火 我认为将所有行添加到一个组 然后将事件附加到一个组就足够了 但它不起作用 我已经简化了我想要完成的代码以
  • 重定向回同一页面时 CakePHP 缓存问题

    我正在使用 CakePHP 2 6 当我重定向回发出请求的同一视图时 我遇到了问题 该视图似乎已被缓存 因此在请求期间所做的任何更改都不会显示 直到再次刷新页面 这意味着 用户无法看到刚刚所做的更改 Flash 消息显示在下列的视图 这很糟
  • Vuetify 外部分页不显示页码

    我有一个 v data table 我正在尝试为其添加分页 我已按照示例文档进行操作here https vuetifyjs com en components data tables example paginate我看不出我做错了什么
  • 使用布尔运算符在 Z3 中定义约束

    比方说 我想使用 Z3 约束将字符串的每个字符限制为字符集 a zA Z0 9 我可以使用布尔运算符来指定吗 举个例子 input BitVec input s i 8 for i in range 10 for i in range 10
  • Shiny:如何在禁用操作按钮的情况下启动应用程序?

    我需要启动一个禁用 button2 的应用程序 仅应在按下 button1 后启用 我怎样才能做到这一点 我正在尝试使用启用 禁用shinyjs包裹 我可以在按 button1 后启用 button2 但是如何在禁用 button2 的情况
  • 代码更改后如何在没有 mvn clean install 的情况下构建项目?

    我在 eclipse 中有一个项目 一个带有 appengine sdk 和 maven 作为我的构建器的 java 应用程序 在我启动全新安装之前 class 文件不会刷新 因此我在代码中所做的每项更改都必须运行 mvn 干净安装 mvn
  • Maven 程序集插件:包含文件而不获取其路径文件夹

    我使用 maven assemble plugin 将依赖项 ZIP 也使用程序集插件生成 中的文件包含到最终版本 ZIP 文件中 问题是我想从依赖项中选择要获取的文件 但不复制这些文件所在的文件夹路径 只是文件 例如
  • 使用 Google Maps API 检索“商家”?

    这是一个例子 它附加了一些元素 例如 Reviews来自各个网站 qype viewlondon 等 Details由各个网站提供 Photos and other content 我不知道如何继续检索此类业务并关联我的网站上生成的任何项目
  • 使用AlwaysUseFullPath 属性了解使用DispatcherServlet 的URL 映射

    我尝试将 DispatcherServlet 中的 URL 配置为映射到不带扩展名的 URL 我终于明白了这一点 但我不明白为什么 URL 会这样工作 假设上下文为 foobar 如果 DispatcherServlet 的 url 模式为
  • GetValue、GetConstantValue 和 GetRawConstantValue 之间的区别

    两者有什么区别GetValue GetConstantValue and GetRawConstantValue上的方法PropertyInfo班级 不幸的是 MSDN 文档对这个主题不是很清楚 Both GetConstantValue
  • Xamarin - 跨平台单元测试

    我正在整合我的团队开发环境 为我们的第一个大型 Xamarin Forms 项目做好准备 从敏捷的角度涉及整个团队 在继续之前我需要验证一个假设 单元测试 我们计划使用适用于 Android 和 Windows Phone 的 TFS 以及
  • 使用 ARC 在 Lion 上查看基于 NSTableView EXC_BAD_ACCESS

    这很奇怪 我有一个超级简单的项目来学习 NSTableView 它在我的笔尖中设置 设置为基于视图的 tableView 我还设置了数据源并委托给我的控制器对象 然而 当我这样做并运行时 我得到一个 EXC BAD ACCESS 跟踪从我的
  • AlarmManager.setExact() 在错误的时间启动?

    我安排挂起的意图在 5 秒内发送 但它在 23 秒内开始 API 19 AlarmManager setExact 10 23 16 43 44 638 11903 11903 D MainActivity Fri Oct 23 16 43
  • 格子,仅当连接具有正斜率时才连接点

    仅当连接具有正斜率时 是否有一种舒适的方法来连接点 否则该函数的行为应与 xyplot 完全相同 library lattice dat lt data frame x 1 10 y sample 1 10 xyplot y x data
  • 使用 Stream.periodic 时如何取消 Stream?

    我无法取消使用 Stream periodic 构造函数创建的流 以下是我取消流的尝试 但是 我很难从内部范围中提取 count 变量 因此 我无法取消订阅 import dart async void main int count 0 f
  • 公开阅读,“私人”保留财产

    创建对公共只读且对 私有 读 写的属性的最佳方法是什么 我可以创建一个只读方法并在 m 文件中的无名扩展名中声明该属性 但最好我想保留点符号 在您的公共界面中 声明该属性为只读 即 Foo h interface Foo private B