美文网首页
performSelector may cause a lea

performSelector may cause a lea

作者: Bearger | 来源:发表于2017-04-26 18:41 被阅读2次

    使用C的方式进行解决
    两个例子,第一个例子拿到类方法;第二个例子拿到实例方法;

    //eg1:
            Class watchSessionManager = NSClassFromString(@"TTNAppWCSessionManager");
            SEL sharedInstanceSel = NSSelectorFromString(@"sharedInstance");
            IMP impSharedInstance = [watchSessionManager methodForSelector:sharedInstanceSel];
            id (*funcSharedInstance)(id, SEL) = (void *)impSharedInstance;
            id watchInstance = funcSharedInstance(watchSessionManager, sharedInstanceSel);
            
            SEL startSessionSel = NSSelectorFromString(@"startSession");
            IMP impStartSession = [watchInstance methodForSelector:startSessionSel];
            void (*funcStartSession)(id, SEL) = (void *)impStartSession;
            funcStartSession(watchInstance,startSessionSel);
    
    
    //eg2:
    SEL selector = NSSelectorFromString(@"processRegion:ofView:");
    IMP imp = [_controller methodForSelector:selector];
    CGRect (*func)(id, SEL, CGRect, UIView *) = (void *)imp;
    CGRect result = func(_controller, selector, someRect, someView);
    

    相关文章

      网友评论

          本文标题: performSelector may cause a lea

          本文链接:https://www.haomeiwen.com/subject/gblwzttx.html