gpt4 book ai didi

objective-c - PyObjC:如何删除现有的 Objective-C 类

转载 作者:行者123 更新时间:2023-12-04 06:15:02 32 4
gpt4 key购买 nike

我之前创建了一个 ObjC 类。我怎样才能再次删除它?因为在以后的某个时候,我想用另一个版本重新创建它。

现在,如果我只是重新声明它,我会收到异常 X is overriding existing Objective-C class .

最佳答案

我不知道如何在 PyObjC 中执行此操作,但是执行此操作的 Objective-C 运行时函数应该是 objc_disposeClassPair() .稍微搜索了一下,表明使用此 Objective-C 运行时功能可能无法在 PyObjC 中工作:

2008 年 1 月的 PyObjC SVN 提交消息如下:Initial attempt of using objc_disposeClassPair. Disabled because this causes an unexpected crash. http://blog.gmane.org/gmane.comp.python.pyobjc.cvs/month=20080101

有问题的代码仍然在 PyObjC 源代码的当前 class-builder.m 中的第 164ff 行,并以一个有趣的注释为前缀:

    /*
* Call this when the python half of the class could not be created.
*
* Due to technical restrictions it is not allowed to unbuild a class that
* is already registered with the Objective-C runtime.
*/
int
PyObjCClass_UnbuildClass(Class objc_class __attribute__((__unused__)))
{
PyObjC_Assert(objc_class != nil, -1);
PyObjC_Assert(objc_lookUpClass(class_getName(objc_class)) == nil, -1);

//objc_disposeClassPair(objc_class);
return 0;
}

话虽如此,我从未在 Objective-C 本身中使用过它,而且我对 PyObjC 了解不多。希望这可以帮助。

关于objective-c - PyObjC:如何删除现有的 Objective-C 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7361847/

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