2016-11-06 3 views
1

저는 신속하게 모든 객체에 대해 내부적으로 사용되는 "맹 글링 (mangling)"이라는 이름 지정 메소드를 생성한다는 것을 알았습니다.신속하게 맹 글링 된 객체 이름을 얻는 방법

모든 스레드는 demangling, 에 대해 이야기하지만 실제로 맹 글링 된 이름을 얻는 방법은 무엇입니까?

내가
1 object_getClass (자기)
2 NSStringFromClass (MyClass.self)
을 시도했지만 그들은 보통의 클래스 이름을 반환합니다.

내가 ..이 디맹 글링 프로젝트를 발견했습니다 https://github.com/mattgallagher/CwlDemangle/blob/master/CwlDemangle/CwlDemangle.swift
는 맹 글링 프로젝트는 어쩌면 있는가?

참고 : 임 명령 행 도구를 사용하여 신속 3.0.1

+0

왜 맹 글링 된 이름이 필요한가? 어쩌면 다른 방법으로 달성 될 수도 있습니다. – werediver

+0

신속한 iOS 프레임 워크를 xamarin iOS에 바인딩하기위한 해결 방법입니다. 여기서 swift와 C# 사이의 브리지에는 실제 클래스 이름이 필요합니다. –

+1

[this] (https://owensd.io/2015/01/14/compiling-individual-files/)와 같은 것이 도움이 될 수 있습니다. – werediver

답변

0

엑스 코드 배를 사용하여이 이름-압착 롤러를 해제합니다.

유형의 : 이 swift demangle

그런 다음 망가 클래스 이름을 찾을 .. __TMaC17find_the_treasure15YD_Secret_Class

다음

이 이름을 뱉어보고 .. find_the_treasure.YD_Secret_Class

당신이 엉망이 이름을 준수하려면 당신이 물어 본 것처럼, 생성 된 스위프트 iOS 또는 macOS 바이너리를 Hopper, iDAPro 또는 radare2과 같은 dissassembler에 넣을 수 있습니다.

이름을 자동으로 제거하는 도구가 이미 있습니다 (Hopper v4.0 Dissassembler 참조).

관련 문제