기존의 나는 ObjC 클래스 이전에 생성. 다시 삭제하려면 어떻게해야합니까? 나중에 다른 버전으로 다시 만들고 싶습니다. 난 그냥 재 선언하는 경우PyObjC는 : 삭제하는 방법 오브젝티브 C 클래스
는 지금, 나는 예외 X is overriding existing Objective-C class
를 얻을.
기존의 나는 ObjC 클래스 이전에 생성. 다시 삭제하려면 어떻게해야합니까? 나중에 다른 버전으로 다시 만들고 싶습니다. 난 그냥 재 선언하는 경우PyObjC는 : 삭제하는 방법 오브젝티브 C 클래스
는 지금, 나는 예외 X is overriding existing Objective-C class
를 얻을.
내가 PyObjC에서이 작업을 수행하는 방법을 모르겠지만,이 일을위한 오브젝티브 C 런타임 기능은 objc_disposeClassPair()
을해야합니다. 조금 주위에 검색이 목표 - C 런타임 기능을 사용하는 PyObjC에서 작동하지 않을 수 있다는 표시 굴복 : 1 월 2008
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
문제의 코드는 현재 여전히
말했다되고 그건/*
* 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;
}
, 내가 목표 - C 자체에서 이것을 사용한 적이 내가 PyObjC에 대해 잘 모르는 : 라인 164ff에서 PyObjC의 소스의 클래스 builder.m와는 흥미로운 코멘트로 시작된다. 희망이 도움이됩니다.
나는 objc_disposeClassPair' 그러나 나는 즉시 충돌을 얻을'호출하는 ctypes를 통해 노력했다. 나는 왜 ... 궁금하다. – Albert
아, 나는 그것을 관리했다. 나는 ctypes 함수 중 잘못된 argtype을 설정했을 수도 있습니다. [이 예] (https://github.com/albertz/chromehacking/blob/master/disposeClass.py)가 작동합니다. – Albert