{"id":16923808,"url":"https://github.com/bugaevc/objc-class-tree","last_synced_at":"2025-03-21T00:29:57.498Z","repository":{"id":71726791,"uuid":"164514735","full_name":"bugaevc/objc-class-tree","owner":"bugaevc","description":"Print a tree of Objective-C classes","archived":false,"fork":false,"pushed_at":"2019-01-07T23:40:15.000Z","size":19,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-01-25T21:12:01.369Z","etag":null,"topics":["objc","objc-runtime","objective-c-runtime"],"latest_commit_sha":null,"homepage":null,"language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bugaevc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-01-07T23:38:07.000Z","updated_at":"2021-01-20T17:39:14.000Z","dependencies_parsed_at":"2023-03-15T15:30:18.385Z","dependency_job_id":null,"html_url":"https://github.com/bugaevc/objc-class-tree","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bugaevc%2Fobjc-class-tree","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bugaevc%2Fobjc-class-tree/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bugaevc%2Fobjc-class-tree/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bugaevc%2Fobjc-class-tree/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bugaevc","download_url":"https://codeload.github.com/bugaevc/objc-class-tree/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244716892,"owners_count":20498278,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["objc","objc-runtime","objective-c-runtime"],"created_at":"2024-10-13T20:00:48.661Z","updated_at":"2025-03-21T00:29:57.482Z","avatar_url":"https://github.com/bugaevc.png","language":"Objective-C","readme":"`objc-class-tree` can print a nice tree of Objective-C classes.\n\nBy default, it will print a huge tree of all the classes loaded in its own binary:\n\n```\n$ objc-class-tree | head -30\nNSProxy\n_NSZombie_\n__NSMessageBuilder\n__NSGenericDeallocHandler\nObject\nNSObject\n├── OCTMethod\n├── OCTTreeFormatter\n├── NSURLDownload\n├── NSXPCInterface\n├── NSAppleEventDescriptor\n├── NSFileWrapper\n│   ├── NSFileWrapperLink\n│   ├── NSFileWrapperDirectory\n│   └── NSFileWrapperFile\n├── NSURLSessionConfiguration\n├── NSSpellEngine\n├── NSXMLParser\n├── NSXMLNode\n│   ├── NSXMLElement\n│   ├── NSXMLDTDNode\n│   ├── NSXMLDTD\n│   └── NSXMLDocument\n├── NSValueTransformer\n│   └── _NSSharedValueTransformer\n│       ├── _NSUnarchiveFromDataTransformer\n│       ├── _NSKeyedUnarchiveFromDataTransformer\n│       └── _NSNegateBooleanTransformer\n│           ├── _NSIsNotNilTransformer\n│           └── _NSIsNilTransformer\n$ objc-class-tree | wc -l\n     401\n```\n\nYou can limit its output to a handful of class trees by using the `--root-class` option:\n\n```\n$ objc-class-tree --root-class NSArray --root-class NSXMLNode\nNSArray\n├── NSKeyValueArray\n├── __NSOrderedSetArrayProxy\n├── __NSArrayI\n└── NSMutableArray\n    ├── NSKeyValueMutableArray\n    │   ├── NSKeyValueNotifyingMutableArray\n    │   ├── NSKeyValueIvarMutableArray\n    │   ├── NSKeyValueFastMutableArray\n    │   │   ├── NSKeyValueFastMutableArray2\n    │   │   └── NSKeyValueFastMutableArray1\n    │   └── NSKeyValueSlowMutableArray\n    ├── __NSPlaceholderArray\n    └── __NSCFArray\nNSXMLNode\n├── NSXMLElement\n├── NSXMLDTDNode\n├── NSXMLDTD\n└── NSXMLDocument\n```\n\nYou can ask it to output implemented methods:\n\n```\n$ objc-class-tree --root-class NSURLResponse --methods\nNSURLResponse\n├── - init\n├── - dealloc\n├── - copyWithZone:\n├── - initWithCoder:\n├── - encodeWithCoder:\n├── - URL\n├── - _CFURLResponse\n├── - _initWithCFURLResponse:\n├── - initWithURL:MIMEType:expectedContentLength:textEncodingName:\n├── - suggestedFilename\n├── - expectedContentLength\n├── - textEncodingName\n├── - MIMEType\n├── + _responseWithCFURLResponse:\n└── NSHTTPURLResponse\n    ├── - initWithCoder:\n    ├── - statusCode\n    ├── - _initWithCFURLResponse:\n    ├── - initWithURL:statusCode:HTTPVersion:headerFields:\n    ├── - initWithURL:statusCode:headerFields:requestTime:\n    ├── - _peerTrust\n    ├── - _setPeerTrust:\n    ├── - _clientCertificateState\n    ├── - _clientCertificateChain\n    ├── - _peerCertificateChain\n    ├── - allHeaderFields\n    ├── + supportsSecureCoding\n    ├── + isErrorStatusCode:\n    └── + localizedStringForStatusCode:\n```\n\nIt can also display protocols and which libraries the classes come from:\n\n```\n$ objc-class-tree --root-class NSString --protocols --library-names\nNSString \u003cNSCopying, NSMutableCopying, NSSecureCoding\u003e (Foundation)\n├── NSSimpleCString (Foundation)\n│   └── NSConstantString (Foundation)\n├── NSPathStore2 (Foundation)\n├── NSLocalizableString \u003cNSCoding, NSCopying\u003e (Foundation)\n├── NSPlaceholderString (Foundation)\n└── NSMutableString (Foundation)\n    ├── NSPlaceholderMutableString (Foundation)\n    ├── NSMutableStringProxyForMutableAttributedString (Foundation)\n    └── __NSCFString (CoreFoundation)\n        └── __NSCFConstantString (CoreFoundation)\n```\n\nSee `main.m` for more supported options.\n\n# Building\n\nBuild using Meson as usual:\n\n```sh\n$ meson build\n$ cd build\n$ ninja build\n# optionally\n$ sudo ninja install\n```\n\n# License\n\nobjc-class-tree is free software, available under the GNU General Public License version 3 or \nlater.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbugaevc%2Fobjc-class-tree","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbugaevc%2Fobjc-class-tree","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbugaevc%2Fobjc-class-tree/lists"}