objective-c - 动态列出类的IBOutlets

标签 objective-c ios macos

我一直在努力

objc_property_t *properties = class_copyPropertyList([NSString class], &outCount);

这有两个我不知道如何解决的局限性:
  • 它不列出继承的属性。
  • 我无法将IBOutlets与其他属性区分开。

  • 如何动态列出类(或实例)中的所有IBOutlet属性?

    最佳答案

    IBOutlet #define d as a blank string;它在编译或运行时都没有任何作用。其唯一目的是允许Interface Builder查看头文件并查看应将哪些ivars用作连接。确定哪个ivar被声明为IBOutlet的唯一方法是对正在使用的任何类的头文件进行一些文本处理。

    对于属性,我不确定除了上 super class 列表并获取其所有属性之外,没有其他方法。您可以循环调用class_getSuperclass以获取类的整个祖先; *当您以根类(Nil)作为参数调用该函数时,该函数将返回NSObject

    *参见例如我的this SO answer

    关于objective-c - 动态列出类的IBOutlets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6590805/

    相关文章:

    ios - 具有非字母字符的Objective-C NSURL

    ios - 如何添加其他语言的元数据?

    ios - 如何让 AVAudioEngine 从麦克风输出 PCM-16?

    javascript - 在 Mac 上禁用橡皮筋滚动

    c - pthread_cond_timedwait 忽略取消请求

    html - Mac 上浏览器之间的字体大小不一致

    Objective-C 保留计数澄清

    iphone - 为什么我的程序在 objc_msgSend() 期间在 _class_isInitialized() 中接收到 EXC_BAD_ACCESS?

    ios - Objective-c updateSearchResultsForSearchController 没有被调用

    objective-c - 核心数据独特的属性