有没有办法记录 Objective-C 实例的所有属性值

2023-12-31

我只是想知道是否有一种快速简便的方法可以将我的类的属性的所有各种值打印到日志中以进行调试。就像我想知道所有 BOOL、浮点数等的值是什么。


这个问题 https://stackoverflow.com/questions/9269372/loop-through-all-object-properties-at-runtime看来他们已经找到了你问题的答案。

Update:

我很好奇,做了一个类别:

//Using Xcode 4.5.2 - iOS 6 - LLDB - Automatic Reference Counting

//NSObject+logProperties.h    
@interface NSObject (logProperties)
- (void) logProperties;
@end

//NSObject+logProperties.m
#import "NSObject+logProperties.h"
#import <objc/runtime.h>

@implementation NSObject (logProperties)

- (void) logProperties {

    NSLog(@"----------------------------------------------- Properties for object %@", self);

    @autoreleasepool {
        unsigned int numberOfProperties = 0;
        objc_property_t *propertyArray = class_copyPropertyList([self class], &numberOfProperties);
        for (NSUInteger i = 0; i < numberOfProperties; i++) {
            objc_property_t property = propertyArray[i];
            NSString *name = [[NSString alloc] initWithUTF8String:property_getName(property)];
            NSLog(@"Property %@ Value: %@", name, [self valueForKey:name]);
        }
        free(propertyArray);
    }    
    NSLog(@"-----------------------------------------------");
}

@end

将其包含在您的班级中:#import "NSObject+logProperties.h"

并打电话[self logProperties];到那些属性!

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

有没有办法记录 Objective-C 实例的所有属性值 的相关文章

随机推荐

  • SQL Server SP_SEND_DBMAIL 图像文件附件

    我正在表上使用触发器来使用 sp send dbmail 发送电子邮件 我想在图像类型的电子邮件中包含文件附件 jpeg 的原始数据存储在二进制类型的 ndl Image 列中 我有以下代码 DECLARE ReferenceID varc
  • 使用适用于 Windows 的 Git 推送到 GitHub 时出错

    我已经在 GitHub 上创建了一个 Git 存储库 也创建了一个本地存储库 首先 我将远程存储库拉入本地存储库 然后我添加了一个文件 暂存该文件 提交了它 现在我尝试再次推送到远程存储库 但失败并显示以下消息 Pushing to htt
  • 在 Flutter 中隐藏滚动条上的底部导航栏

    我在正文和底部导航栏中有一个博客文章列表 我想在帖子列表向下滚动时使用向下滑动动画隐藏底部导航栏 并在向上滚动时使用向上滑动动画可见 怎么做 此解决方案只是解决此问题的方法 可能会发生一些有害的变化 import package flutt
  • Linq to NHibernate 与 ICriteria

    我通常经常使用 LINQ 尤其是 LINQ to Objects 因此我对 LINQ 相当熟练 我正在考虑使用 LINQ to NHibernate 作为我的 NHibernate 项目的查询语言 当我编写一些测试时 我注意到 LINQ t
  • 使用 Spring Kafka 添加自定义标头

    我计划使用 Spring Kafka 客户端在 Spring Boot 应用程序中使用 kafka 设置并生成消息 我看到 Kafka 0 11 中对自定义标头的支持详情here https issues apache org jira b
  • ionic 2 - inappbrowser“browser.on(...).subscribe 不是函数”错误

    我遵循这个http ionicframework com docs native in app browser http ionicframework com docs native in app browser 在appbrowser中使
  • Ruby 解压数组以阻止

    settings 127 0 0 1 80 0 0 0 0 443 我能怎么做 settings each do ip port end 代替 settings each do config ip port config end 您的第一个
  • 为什么我的图标不会在新的 Chrome 网上应用店中显示为完整尺寸?

    我在 Chrome 应用商店中发布了一个扩展程序 昨晚 网上商店的外观焕然一新 现在我的图标看起来非常小 位于拼图游戏的内部 我跟着指示 https developer chrome com extensions manifest icon
  • iPhone - 是否不可能获取 CALayers 组合的内容?

    我在屏幕外 UIView 比 320x480 大得多 上有一个 CALayer 进行 3D 转换 如何将 UIView 上看到的内容转储到 UIImage 中 注意 我已经编辑了问题以包含此代码 这就是我创建图层的方式 CGRect are
  • 如何从ITK注册中获得变换仿射?

    进行 3D MRI 扫描A B and C我想执行仿射 联合 配准B onto A 取配准的变换仿射矩阵并将其应用于C 我的问题是配准变换的仿射矩阵的符号错误 也许是因为方向错误 The TransformParameters包含 12 个
  • 从 UIColor 预设中获取 RGB 值

    在我的应用程序中 我将 RGB 颜色值传递给服务器 我的应用程序使用 UIColor 预定义值 例如 UIColor greyColor UIColor redColor 我知道我可以使用以下代码 const CGFloat c CGCol
  • 使用双指针时的奇怪行为

    我需要帮助来理解为什么在这个小程序中我无法正确操作指针 include
  • 如何在 vim 中创建映射以自动执行 .h c++ 文件的 ifdef 命令

    如何在 vim 中创建映射以自动执行 h c 文件的 ifdef 命令 基本上我想要一个映射来创建以下可与 h 和 hpp 等一起使用的内容 ifndef
  • 使用 Android AccountManager 进行第三方 OAuth2 授权

    我正在开发一个应用程序 需要通过 OAuth2 从第三方网络服务获得授权 第三方意味着它不是 Google 并且我不拥有它 本文 http developer android com training id auth authenticat
  • Python 中的欧拉项目#8

    求 1000 位数字中 5 个连续数字的最大乘积 import time num 73167176531330624919225119674426574742355349194934 9698352031277450632623957831
  • 如何实现didReceiveMemoryWarning?

    我开发了一个简单的位置感知 iPhone 应用程序 除了手机内存不足的情况外 该应用程序的功能非常符合我们的预期 在手机内存不足的情况下 我的应用程序只会崩溃 如果我通过释放一些空间来增加手机内存 它会再次开始正常工作而不会发生任何崩溃 当
  • Python 文件读+写

    我正在致力于将数据库从自定义 MSSQL CMS 移植到 MYSQL Wordpress 我正在使用 Python 读取 txt 文件 t划定的列和每行一行 我正在尝试编写一个 Python 脚本来读取此文件 fread 并 最终 创建一个
  • std::tuple 的实现是否允许因触发空类元素的派生到基类转换而失败?

    此代码无法使用 GCC4 7 编译 struct A void f A struct B B std tuple a void f B int main f std make tuple A 因为GCC源自A利用空基类优化 然而 这导致 G
  • 构建方法多久被调用一次?

    我注意到构建方法在 flutter 应用程序中经常被调用 我知道如果 statefulWidget 中页面的状态发生变化 则会触发构建方法 但我也注意到 即使应用程序中没有任何更改 也会调用构建方法 考虑到您将应用程序留给自己的情况 构建方
  • 有没有办法记录 Objective-C 实例的所有属性值

    我只是想知道是否有一种快速简便的方法可以将我的类的属性的所有各种值打印到日志中以进行调试 就像我想知道所有 BOOL 浮点数等的值是什么 这个问题 https stackoverflow com questions 9269372 loop