gpt4 book ai didi

ios - 为什么两个 id 变量的 class_copyPropertyList() 存在差异但具有相同的类类型

转载 作者:行者123 更新时间:2023-11-29 03:16:17 24 4
gpt4 key购买 nike

id appdel = [[UIApplication sharedApplication] delegate];  // <--- i have set this delegate to an instance of MyAppDelegate
unsigned int property_count; // <--- it will have 0
objc_property_t * property_list = class_copyPropertyList(appdel, &property_count);
the property_list will be nil;

但是如果我使用这个:

id casualcore_app_delegate = objc_getClass("MyAppDelegate");

unsigned int outCount, i; // <--- outCount will be the correct property count
objc_property_t *properties = class_copyPropertyList(casualcore_app_delegate, &outCount);

for (i = 0; i < outCount; i++)
{
objc_property_t property = properties[i];
fprintf(stdout, "%s %s\n", property_getName(property), property_getAttributes(property));
}

请告诉我,为什么相同的函数调用会返回不同的结果?

最佳答案

这两个参数不一样。

id appdel = [[UIApplication sharedApplication] delegate];

是 MyAppDelegate 类的实例,并且

id casualcore_app_delegate = objc_getClass("MyAppDelegate");

本身。

现在,class_copyPropertyList() 的第一个参数是一个,因此它可以工作在第二个例子中,但在第一个例子中没有。如果你改变

objc_property_t * property_list = class_copyPropertyList(appdel, &property_count);

objc_property_t * property_list = class_copyPropertyList([appdel class], &property_count);

那么您的第一个示例也可以正常工作,并给出相同的结果。

关于ios - 为什么两个 id 变量的 class_copyPropertyList() 存在差异但具有相同的类类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21665689/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com