Objective C 中的动态特性

2023-11-22

我发现 Objective-C 对象属性可以标记为@dynamic让编译器知道实现将在运行时可用。我想知道是否有一种方法可以告诉编译器对象上的所有属性都是动态的,而无需逐一显式指定它们(我没有预先提供属性列表)。我知道如果我只使用这不会成为问题[object something]但出于风格目的我想使用object.something句法。

我相当确定不可能这样做,但我希望有人能证实这一点。由于这不是用于生产用途的解决方案,因此可以涉及您可以想象的任何内容。

Thanks.

附加信息:

  • 我只关心-something(getter) 工作,所以如果您的解决方案不支持 setter,那也没关系。

Example:

@interface MagicalClass : NSObject
// property 'something' is not defined!
@end

@implementation MagicalClass
- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector { ... }
- (void)forwardInvocation:(NSInvocation *)anInvocation { ... }
@end

MagicalClass *obj = [[MagicalClass alloc] init];
[obj something]; // compiler warning
obj.something; // compiler error

这确实不适用于声明的属性。它们的重点是您预先声明您的属性是什么以及如何与它们交互。如果您没有任何要声明的属性,那么您就没有任何已声明的属性。

不幸的是,它也不起作用well使用纯消息,尽管它比点语法工作得更好。 Objective-C 的静态类型检查会抛出大量警告,如果任何属性属于非对象类型,它可能无法生成正确的调用代码。

这种事情在 Python 和 Ruby 这样的语言中很常见,这些语言不需要声明东西,但它与 Objective-C 不能很好地契合。在 Objective-C 中,访问任意属性通常是通过字符串完成的(参见键值编码 and NS属性字符串).

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

Objective C 中的动态特性 的相关文章

  • UITableViewCell 上的自动布局问题

    我在使用自动布局时遇到问题xcode 5项目 我在内部使用带有导航控制器的普通视图控制器 我有一个MKMapView在上半部分和一个UITableView在下半部分 我在用storyboards 并配置了原型UITableViewCell
  • 使用 iOS 7 检索设备 WiFi MAC 地址

    我们的应用程序使用设备 WiFi MAC 地址来唯一标识设备 根据苹果文档 https developer apple com news id 8222013a我们将开始使用 UIDevice 的identifierForVendor 属性
  • GCD 和线程

    我想了解一些有关 GCD 和线程的知识 我的视图控制器中有一个 for 循环 它要求我的模型执行一些异步网络请求 因此 如果循环运行 5 次 模型将发出 5 个网络请求 考虑到我正在使用 NSURLConnection 的 sendAsyn
  • 在横向模式下向 UIScrollView 添加子视图

    我有一个以横向模式启动的视图控制器 其中有一个 UIScrollView 我尝试创建子视图并将它们添加到 UIScrollView 但视图的框架大小都是纵向大小 这是我的代码 void viewDidLoad super viewDidLo
  • 如何使用 WKWebView 正确实施身份验证质询?

    我正在构建一个网络浏览器 但在网络方面我真的是新手 我想测试下面的代码示例 但我没有现实生活中的示例可以使用 void webView WKWebView webView didReceiveAuthenticationChallenge
  • 创建自定义 MCBrowserViewController

    有没有办法创建一个UITableView包含在中找到的相同信息MCBrowserViewController 我当前的代码只允许推送与我的应用程序设计不同的标准视图 self browserVC MCBrowserViewControlle
  • 从视频生成缩略图 - ios7

    我用这个作为参考 从视频 URL 或 iPhone SDK 中的数据获取缩略图 https stackoverflow com a 6027285 1145339 该方法使用 MPMoviePlayerController 类而不是 AVF
  • 方向改变时重新定位控件

    我知道自动布局可用于在方向改变时使尺寸和位置保持一致 当方向改变时 是否可以完全改变布局 例如 请查看下面的纵向模式下简单登录屏幕的线框 现在 如果我旋转设备 我想完全重新定位控件 这种事情可以用自动布局来完成吗 如果没有 我该怎么办 谢谢
  • 在 iOS 5 中,我们可以邀请人们使用我们的应用程序或通过 Facebook 从应用程序发送好友请求吗?

    考虑X and Y是朋友Facebook他们都在各自的手机中安装了一个应用程序 但他们在这一点上并不是朋友应用程序的好友列表 那么现在 可以X 发送好友请求 Use Facebook sdk 3 1 https developers fac
  • 如何将 NSSecureCoding 与 id 对象一起使用

    我正在创建一个链接列表并使用容器对对象 下一个和上一个属性进行分组 就像基金会收藏一样 我希望它能够实现NSSecureCoding 这是声明 interface ListContainer NSObject
  • 如何将图像放入此 UIPickerView 中?

    我不知道如何创建一个在文本一侧带有图像的自定义 UIPickerView 我一直在寻找一种方法 我刚刚发现了这个 UIView pickerView UIPickerView pickerView viewForRow NSInteger
  • NSString stringWithContentsOfFile 失败,错误代码似乎错误

    我正在尝试将文件加载到字符串中 这是我正在使用的代码 NSError error nil NSString fullPath NSBundle mainBundle pathForResource filename ofType html
  • 为什么在 init 方法中使用双括号,或者是 1 == (1)?

    评估某些含义时括号有什么作用 我在代码中遇到过这个问题 当检查某些内容并且他们使用 if some condition that returns 1 code 所以我的问题是 这是否正确 我认为它总是错误的 因为 1 不返回任何东西 编辑
  • 从一个模态视图无缝翻转到另一个模态视图,而不显示纯色背景

    我的 iPad 应用程序的 UI 如下 当我点击Settings按钮 我希望对话框水平翻转以显示设置对话框 我这个工作正常 但是 当对话翻转时会显示背景颜色 如你看到的 有什么办法可以让对话框翻转时不显示该颜色块吗 我希望它看起来更加无缝
  • 如何在 iPhone 上使用带有线程的 sqlite + fdbm 库

    相关这个问题 https stackoverflow com questions 1082554 我想把数据加载放在后台 但是 我收到 库例程调用不按顺序 错误 In 这个所以线程 https stackoverflow com quest
  • 调整 UIImage 的大小而不将其完全加载到内存中?

    我正在开发一个应用程序 用户可以在其中尝试加载非常非常大的图像 这些图像首先在表格视图中显示为缩略图 我的原始代码会在大图像上崩溃 因此我重写它以首先将图像直接下载到磁盘 是否有一种已知的方法可以调整磁盘上图像的大小 而无需通过以下方式将其
  • 访问目标 c 中的类方法。使用 self 还是类名?

    我正在学习 iOS 编程 并且对以下有关关键字 self 的使用的代码感到困惑 据我了解 self就像Java的this 它指的是当前实例 当我想调用类方法时 通常的方式应该是这样 PlayingCard validSuits 但是侵入实例
  • UITableViewCell显示多种字体

    我想在 uitableviewcell 中以类似于 iPhone 地址簿的不同字体显示两个单词 例如 约翰Buchanan 您应该使用两个 UILable 或者您可以使用OH属性标签 https github com AliSoftware
  • TableViewController 的 viewDidLoad 未触发

    我一直在关注这个tutorial http www appcoda com ios programming sidebar navigation menu 有一个滑出式菜单 我添加了一个 TableViewController 它将显示文章
  • ios - 如何声明静态变量? [复制]

    这个问题在这里已经有答案了 C 中声明的静态变量如下 private const string Host http 80dfgf7c22634nbbfb82339d46 cloudapp net private const string S

随机推荐

  • 如何使用自定义IPasswordHasher?

    我实现了 IPasswordHasher public class MyPasswordHasher IPasswordHasher public string HashPassword string password using SHA2
  • Android Studio 像素化预览

    将 Android studio 更新到版本 3 1 2 后 出现预览图像像素化 模糊的问题 谁能帮我解决这个问题吗 这就是图像的渲染方式 我在 Android Studio 3 3 中遇到了同样的问题 但幸运的是我已经找到了解决方案 您必
  • C# 中两个列表相交

    我有两个清单 List
  • 是如何实现的?

    C 没有 据我所知 重载或模板 对吧 那么 在普通的 C 语言中如何存在一组与类型无关的同名函数呢 通常的编译时技巧会涉及一大堆宏 不是吗 关于它在 GCC 中如何工作有一个很好的解释here 另外 如果有人能解决中等难度的练习 我很想知道
  • 更快的排列生成器

    我为 Scala 列表编写了一个排列生成器 它生成给定列表的所有排列 到目前为止 我已经得到以下基于这个 Haskell 实现 我认为它比我尝试过的其他几个选项更有效 有什么方法可以提高效率 或者我已经涵盖了所有基础吗 For each e
  • 通过Curl/PHP查询API

    我正在查看 Parse com REST API 并使用 PHP 使用的 Curl 包装器进行调用 原始 Curl 代码 有效 curl X GET H X Parse Application Id myApplicationID H X
  • Struts2 文件上传最大大小

    我需要上传最多 10 MB 的文件 我使用了以下内容 在我的 struts xml 中 我配置如下
  • 让 VB6 显示哪个组件没有安装设计时许可证

    我继承了一个我正在尝试 制作 的 VB6 项目 构建在 制作 EXE 步骤中失败 并出现许可错误 License information for this component not found You do not have an app
  • C# 代码在后台以静默模式运行我的 installer.exe 文件,[重复]

    这个问题在这里已经有答案了 我有这个 C 代码 string desktopPath Environment GetFolderPath Environment SpecialFolder Desktop ProcessStartInfo
  • mysql中的同步存储过程执行

    我有一个存储过程mysql也就是说 执行需要同步的任务 这样 如果两个应用程序调用存储过程 则只有一个应用程序可以访问一段代码来执行该任务 而另一个应用程序将被阻止 直到第一个应用程序完成任务 DELIMITER CREATE PROCED
  • Visual C++:#include 来自同一解决方案中其他项目的文件

    我正在使用 Visual C 开发游戏 我在单独的项目中有一些组件 并设置了项目依赖项 如何 include 来自不同项目的头文件 我不知道如何在另一个项目中使用一个项目中的类 编译器的设置 在您想要 include 头文件的项目中anot
  • 如何在 Scala 中使用正则表达式进行模式匹配?

    我希望能够找到单词的第一个字母与组中的一个字母 例如 ABC 之间的匹配项 在伪代码中 这可能看起来像 case Process word gt word firstLetter match case a c A C gt case gt
  • 在 R markdown 中使用内联带空格的变量名称

    我怎样才能包含内联R引用包含空格或其他异常字符的变量名的代码 实际用例是Pr gt F 反引号是解决方案简单地R脚本 但当代码内联在 Markdown 文档中时它们似乎不起作用 这是一个例子 r df lt data frame mydat
  • 如何针对特定查询优化表?

    您使用哪些模式来确定频繁查询 如何选择优化因素 人们可以做出哪些类型的改变 这是一个很好的问题 虽然相当广泛 但也并不更糟 如果我理解你的意思 那么你是在问如何从头开始解决优化问题 首先要问的问题是 是否存在性能问题 如果没有问题 那么就完
  • Lambda 表达式和高阶函数

    如何使用带有闭包的 Java 8 编写支持将函数作为参数并返回函数作为值的方法 在 Java Lambda API 中 主类是java util function Function 您可以像使用所有其他引用一样使用对此接口的引用 将其创建为
  • Powershell 4 Get-ScheduledTask 和 Windows

    我认为无论您使用什么操作系统 如果安装了 Powershell 您都可以访问相同的默认 cmdlet 所以我想用获取计划任务在我的 Windows 7 机器上 我安装了 Powershell 4 但是 当我运行它时 我收到错误 Get Sc
  • iOS:自动布局导致 UIScrollView 不滚动

    我已经设置了一个UIScrollView我想用它水平显示 12 张图像 屏幕上只能显示 8 张 在下图中 您可以看到我遇到的问题 这使得我的滚动视图无法滚动 我的约束和UIScrollView我已将其添加到故事板上 我已经调用了以下方法 v
  • Play 框架 CORS 标头

    我正在尝试为我的 Play 框架应用程序设置 CORS 标头 具体来说我收到这个错误 cannot load http 127 0 0 1 9000 No Access Control Allow Origin header is pres
  • ActiveRecord::StatementInvalid: PG::Error: 错误: 列“id”中的空值违反了非空约束

    我在我的应用程序中经常收到以下错误 如果我重新启动 Rails 应用程序 此错误将在一段时间内不会出现 导轨 3 1 3 红宝石 1 9 3 ActiveRecord StatementInvalid PG Error 错误 空值 列 id
  • Objective C 中的动态特性

    我发现 Objective C 对象属性可以标记为 dynamic让编译器知道实现将在运行时可用 我想知道是否有一种方法可以告诉编译器对象上的所有属性都是动态的 而无需逐一显式指定它们 我没有预先提供属性列表 我知道如果我只使用这不会成为问