{"id":31939751,"url":"https://github.com/alibaba/lokie","last_synced_at":"2025-10-14T08:46:05.954Z","repository":{"id":66340258,"uuid":"194614176","full_name":"alibaba/Lokie","owner":"alibaba","description":"iOS efficient AOP Library using C++ and libffi","archived":false,"fork":false,"pushed_at":"2019-11-08T06:43:54.000Z","size":277,"stargazers_count":145,"open_issues_count":1,"forks_count":23,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-05-13T04:32:41.797Z","etag":null,"topics":["aop","c","cpp","efficient","ios","oc"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alibaba.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":"SupportingFiles/FliggyLokie.h","governance":null,"roadmap":null,"authors":null}},"created_at":"2019-07-01T06:37:52.000Z","updated_at":"2024-11-27T07:57:25.000Z","dependencies_parsed_at":"2023-02-23T04:00:38.775Z","dependency_job_id":null,"html_url":"https://github.com/alibaba/Lokie","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/alibaba/Lokie","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alibaba%2FLokie","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alibaba%2FLokie/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alibaba%2FLokie/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alibaba%2FLokie/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alibaba","download_url":"https://codeload.github.com/alibaba/Lokie/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alibaba%2FLokie/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279018299,"owners_count":26086345,"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","status":"online","status_checked_at":"2025-10-14T02:00:06.444Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["aop","c","cpp","efficient","ios","oc"],"created_at":"2025-10-14T08:46:04.365Z","updated_at":"2025-10-14T08:46:05.950Z","avatar_url":"https://github.com/alibaba.png","language":"C","readme":"# LOKIE\n\nA framework for building iOS AOP.\n\nSupport iOS 8.0+ \n\n\n\n## building Lokie \n\n* open Lokie.xcodeproj with Xcode and build it\n* defualt configuration will build Lokie.framework for you\n* you can use Lokie.framework as other normal framework in your project\n* Enjoy it.\n\n## Use Lokie\n\n### API  \n\n```\n//! Lokie.h\n#import \u003cFoundation/Foundation.h\u003e\n\ntypedef enum : NSUInteger {\n    LokieHookPolicyBefore = 1 \u003c\u003c 0,\n    LokieHookPolicyAfter = 1 \u003c\u003c 1,\n    LokieHookPolicyReplace = 1 \u003c\u003c 2,\n    LokieHookPolicyPatchEnv = 1 \u003c\u003c 3,\n} LokieHookPolicy;\n\n@interface NSObject (Lokie)\n\n+ (BOOL) Lokie_hookMemberSelector:(NSString *) selecctor_name\n                        withBlock: (id) block\n                           policy:(LokieHookPolicy) policy;\n\n+ (BOOL) Lokie_hookClassSelector:(NSString *) selecctor_name\n                       withBlock: (id) block\n                          policy:(LokieHookPolicy) policy;\n\n+ (BOOL) Lokie_resetSelector:(NSString *) selector_name withType:(BOOL) isMember;\n\n+ (NSArray *) LokieErrorStack;\n\n@end\n\n```\n\n### How to use\n\n```\n#include \u003cLokie/Lokie.h\u003e\n\n//! insert something before UIViewController::viewDidAppear:\nClass cls = NSClassFromString(@\"UIViewController\");\n[cls Lokie_hookMemberSelector:@\"viewDidAppear:\" withBlock:^(id target, BOOL ani){\n        NSLog(@\"LOKIE: before viewDidAppear\");\n }policy:LokieHookPolicyBefore];\n\n[cls Lokie_hookMemberSelector:@\"viewDidAppear:\" withBlock:^(id target, BOOL ani){\n         NSLog(@\"LOKIE: after viewDidAppear\");\n }policy:LokieHookPolicyAfter];\n \n//! we can insert some code before/after \nClass cls = NSClassFromString(@\"MyViewController\");\n[cls Lokie_hookMemberSelector:@\"initWithConfig:\"\n                    withBlock:^(id target, NSDictionary *param){\n                        NSLog(@\"%@\", param);\n                        NSLog(@\"Lokie: %@ is created\", target);\n} policy:LokieHookPolicyAfter];\n    \n//! hooked selector does not has any param\n[cls Lokie_hookMemberSelector:@\"dealloc\" withBlock:^(id target){\n        NSLog(@\"Lokie: %@ is dealloc\", target);\n} policy:LokieHookPolicyBefore];\n\n```","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falibaba%2Flokie","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falibaba%2Flokie","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falibaba%2Flokie/lists"}