From a3dbe04115bc1fa69c862e7b4c38b783be14d860 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=96=9B=E7=B2=BE=E8=B1=AA?= Date: Tue, 18 Sep 2018 16:33:04 +0800 Subject: [PATCH 1/3] JSBUtilDelegate --- .../UserInterfaceState.xcuserstate | Bin 10124 -> 11587 bytes dsbridge/InternalApis.m | 9 +++ dsbridge/JSBUtil.h | 7 +++ dsbridge/JSBUtil.m | 59 ++++++++++++++++++ 4 files changed, 75 insertions(+) diff --git a/dsbridge.xcodeproj/project.xcworkspace/xcuserdata/xuejinghao.xcuserdatad/UserInterfaceState.xcuserstate b/dsbridge.xcodeproj/project.xcworkspace/xcuserdata/xuejinghao.xcuserdatad/UserInterfaceState.xcuserstate index c8e97c89ed9d6ba875d20db068e0a695d8b3b181..85ba9af89613426953a340aa15b11713ad3b356a 100644 GIT binary patch delta 6766 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 PeCGz;J5AiXxjy +/** + All methods for JS in a class. + */ +- (NSArray *)ds_allMethodsForJS; +@end + enum{ DSB_API_HASNATIVEMETHOD, DSB_API_CLOSEPAGE, diff --git a/dsbridge/JSBUtil.m b/dsbridge/JSBUtil.m index 7c9d8e5..194a3af 100644 --- a/dsbridge/JSBUtil.m +++ b/dsbridge/JSBUtil.m @@ -8,6 +8,8 @@ #import #import "DWKWebView.h" +/// 缓存类的方法 +static NSMutableDictionary *_JSBUtilClassMethodsCache; @implementation JSBUtil + (NSString *)objToJsonString:(id)dict @@ -30,6 +32,7 @@ + (NSString *)objToJsonString:(id)dict } //get this class all method +#if 0 +(NSArray *)allMethodFromClass:(Class)class { NSMutableArray *arr = [NSMutableArray array]; @@ -45,6 +48,62 @@ +(NSArray *)allMethodFromClass:(Class)class free(methods); return arr; } +#else ++(NSArray *)allMethodFromClass:(Class)class +{ + // fetch from cache + NSString *key = NSStringFromClass(class); + NSArray *allMethods = [_JSBUtilClassMethodsCache valueForKey:key]; + if (allMethods) { + return allMethods; + } + + // fetch from protocol + NSArray *array; + NSMutableSet *methodSet = [NSMutableSet set]; + Class cls = [class class]; + id obj = [cls new]; + while ([obj respondsToSelector:@selector(ds_allMethodsForJS)]) { + NSArray *array = [obj performSelector:@selector(ds_allMethodsForJS)]; + [methodSet addObjectsFromArray:array]; + + cls = class_getSuperclass(cls); + obj = [cls new]; + } + array = methodSet.allObjects; + + // fetch from class, superclass... + if (!array) { + NSString *className = NSStringFromClass(class); + NSMutableSet *methods = [NSMutableSet set]; + while (class) { + unsigned int count = 0; + Method *method = class_copyMethodList(class, &count); + for (unsigned int i = 0; i < count; i++) { + SEL name1 = method_getName(method[i]); + const char *selName= sel_getName(name1); + NSString *strName = [NSString stringWithCString:selName encoding:NSUTF8StringEncoding]; + [methods addObject:strName]; + } + free(method); + + Class cls = class_getSuperclass(class); + className = NSStringFromClass(cls); + class = [className hasPrefix:@"NS"]?nil:cls; + } + + array = methods.allObjects; + } + + if (!_JSBUtilClassMethodsCache) { + _JSBUtilClassMethodsCache = @{}.mutableCopy; + } + + [_JSBUtilClassMethodsCache setValue:array forKey:key]; + + return array; +} +#endif //return method name for xxx: or xxx:handle: +(NSString *)methodByNameArg:(NSInteger)argNum selName:(NSString *)selName class:(Class)class From 50f47b90ccf75863e46114fb2cbd0eda3528974e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=96=9B=E7=B2=BE=E8=B1=AA?= Date: Tue, 18 Sep 2018 16:54:01 +0800 Subject: [PATCH 2/3] fix bug --- .DS_Store | Bin 0 -> 6148 bytes .../UserInterfaceState.xcuserstate | Bin 11587 -> 12088 bytes dsbridge/JSBUtil.m | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..fe82fdbcc20b2c5a59ce18ced0c3518af346cc62 GIT binary patch literal 6148 zcmeHK&1w`u5Ux(fIFkh##X|x)GK%rHQOK4-CF=a+EwfUxBy_I3bYn+ z_=Sjhp;I!aJqw6L)<__RKCoz145y-v!!TeN_}>^1d)LNYTR;RkoZG)q$|Icn77f#+ zC|j-1WNzNNvT)UQ78_3ETElr34EQK0!?G&cVcvCDf+S{9nC~QUIoM{|M#}bB_AuWJ zOO`(o!P}gt7@+JhdYrIP*S&e4XJwdVESL3Eji)+7v1y}PK%e3zWJ-(|C!!HMy&D-Uj zPF$5efKPAEzFHqIpBMjC-f(d4caj#q&dBUDpg(`RG5bq3D>Muk2L6x%aXwH~fxgCC zp*%WpkSzeBg>ETmi(W$HP>sIES|QG$5S5CkQi*Och)PF4)p5SYTA@k@qMHw*-%NCe zLgd@AK9%7>e1&E-3>XG3GBB?mU2*?!{J#Icm}H&|1BQW_Vt`nkpwq@B>AQ7mapJC} us4q~3h`3szOu<24$I=j2@e-;OoTI`(^flHB(Su_C2uK>tU>NwP415O+6qa-V literal 0 HcmV?d00001 diff --git a/dsbridge.xcodeproj/project.xcworkspace/xcuserdata/xuejinghao.xcuserdatad/UserInterfaceState.xcuserstate b/dsbridge.xcodeproj/project.xcworkspace/xcuserdata/xuejinghao.xcuserdatad/UserInterfaceState.xcuserstate index 85ba9af89613426953a340aa15b11713ad3b356a..d6b5b549296115a2867332726e2590ac0ee6f665 100644 GIT binary patch delta 6617 zcmZu!33yY*7M?RV%e~o?o13;|Pi|A7El{wOQkE84pwO1?Eo({Jbdl0RlTuJ1Q#L`A z2SgFUg)WFJDw}|^DEeGbals8&KfV@dV0UxjT`+9F?&dm8|=KTLT^Wx-# z)7O}o{mg;2F@3 zAFW3Zpbh9jv=MDa?Px1{9PL9-qy6XrI*5*<7to97pXfF8Hu?a4iatYMqI2jX`UPD= zR{;Tl5>%iDH;51m9*Be9&jc6bu@z+N~22jM6@2QR`a z@G2aKx8Njv03X7aa2CFTui+cWy$HX+CHNKo1AkzI0b|T!HIBm3I0n11h+}ad+#e6X z$#^7A#~FA6&cV631Xo}mo{5{VAGhLpcmZz1%kaw30T{{rh%bbGhj{B?W&|^mNoNX~ zBBq!rVM>`Yrkt6?OlGDqQ$rbefQs45>|k~>yO`a~)1f&y9c-aJcrIroQgWE264%}& zMh6}v5r~_l(}oGeRiQIw`2F?%fVVM_Rb3xwYWC-N=Qp(kLQ^Fh`cBKv%!;&TH2b_d z#J!6+q(DkE7G)!`9gQQVb~K(u5m!iOh#7+NP(cTpi1JA^u@h&HaSC|@ zA-#yX6O|(enoKOjNUX#bvg!Nr`R??k1cm=jqDoYSs*x}Bh1?jNnpc!rUlpitYVzXL5qVh6etEg&L^?LdoAka$QO-IbZV zw*W0e_aN~xv>e@qR-l#WZnTQ@CVfa>5>FCH;$!Guv>LhTvlgu*{YVNum{c;9q=gU1 z7(Re`v%QVgzUu6NZIxrTCrN5YTgX7-DzEleHrH3z`g$z3p(l~pg|?#|XeWAt3?jFY zWHPvm{_K9}&&cDNn$pz?Jbi%gAQFsc9;wywjM9fq34mfc{6dbp>)9( zL@%LNt{c8ehTSlH9i6xi_)RjLxO!%I2fZ8ac!CUWNAHmlH#$BjaopQA6rCfy-?hGdXYu9MxNeHImTqOZ``=o>PMWRY<<;`lrC!!2R< zBaP#q$Y>hJnKX_^n%qJ3EBfOWvp=cX6*7jJjU~3fv&x;mHWHiHfB^>C|BeSaasx-Q zX<&>GpRA6aYet*<%k zH8e-MUYy*}try|I>{&q~^ru@3{YYs$3?OBc2YVF#)8RH49Bxh~G!dOLj*QxXt!#Eh<4%uWn>0v+QKrs@xLN4UN zM97B%D1;(XL1qvysU%gTn)tRt36w$^l%rEH8K#gLQcLEOyU0kgf~=(IK2Yu+1vSu! z3|pZV>YyHOhndg-vq&AOC%2QCq=C#Lja#7!X2Tq420#7slO{5o%q6X49{rj}Y9k4SL&Dy0M@C2#} ze~suF{RHfS$H`zqsIl}~BkZGx@;F&c4`tB}uER4F=d*AK4#Sbq!)z40lq@5tLRT1S zvt;L7Ctt+j^Kh&}$7hxnXEs%}%%ae8nyS2Eh3|kDP|g4Eij4dxyc81RSCQ-mlW@_f4ViW?uuHbgqveayMBT8UHrCQ<7IyQkc^LZ=;%S z!o$1ahj zXO6EXP+IS6om5y~Ti5+HIg&$jo2q>kI)Re4Xg1|)*ruC4Vea%q$+z%**v&ck4*m`2 zNhpTgNA4%dR$0lL;;1oCg)!P7IvpKvA2tIOoUc9cx5DOL5O zn;QL14Zbn;4FO+s7>5q7nPUb^sd=~XVHtUdM05{xGo7#YIJ z8}rD41@Z_5^(c+z9DPg$?uBhP+jX1SshN|sQ?m|YyRkX$^tKHVt%^t$_TV_wod
~N%G7GxD=Psu5vsH zPo~`kcp5G6rlZWzdRbm@KRHOAx{0xP2KGi6OP(gXB5dtGJzPWCifeHlt|z<69 z0wZdKm*cxCba9~x3b!hc22KZF5$0rfgF4*M%_Mv`UKJXrh?C%ZC=Hz>GvH8$M!fOq{4Q%2`gKRH-$B$s+cRPw1aKIAv&w z*x1t0P@%J?40a429LkTHI-EC_id79>zrVb-zOlNgH9M15M6-R(;d+&-#tl^?oF3N_ zwyYwrXlT-a)RR%sF}-N&9f{_52PA0+4!SM0D0-w$NA$!{p^Lin&XmCkj)6l$Z$|g2j*1?VN{5woFYVf} zA!dp_ZP?#y-ZV3<R79ps=X8 zq;y)(jANR;vwWc)F_sj%q-;MOT}qWNJ3EuEINKl2yfmZd6^*HH_6G`m{@G15F*H-% z939^9yztok7*nt)Fu%c<>-Ep1s@yYkSyS^&|7>rSFFW%({=Al1mA+;IgdsAHV2;R% zgeY`cBGofT5sUPw7ge-GG!UiGTS74k&}w-Zz4&cHd(pG#7`^75p%=Wb(YNRVxgaGc%YXB9n%ECtio|Lp5}x!@q7m@DF=Uj53m! z+kn;sk~T230pA8f8 zi?qo3qysMCUum}bl-QL&uk0D+Y_u!jP!36)K@oEP%c_QDIpYe$PI0b ziO%=+%|+7&N1BzEs7!Cz6)sho1PYZWKhoMH{JwB2;9>6cnlHNHUIR#g0A&OCw&Xbz8jx5M}@n8I{2UCb7;vJIlzAf^q> z;iPjtW|-~auxNwm&?3uJ;YRaQk>*}E#nMf^`y#!TYrz!ksq*S>m8*A{gUmA}MFDTX zM}W#f4054(dW=KSNW2g)!E5ja+=;j2r|@pP7azpW;=}kT{t91aIL1Wz+KaI;HpaoY znEp%>Gl)s1XPL^RF~gZf%r@pF<{Rc$Nl-7bNfIUfB}tM&l4MDWBvq0o8869^l&0m+Y4um;5GGN@JvEsYTjHnjq~bO_C0hCQGxWh0-$VBa#^FSMYdRWmu#hMm28b{o$Nl@df9f_3E2hN6}dvLl56BT zxj}A}o8)eJtUONMM;$;ZiCxnEQtNfxE!{%>Bas$z9>DDnP*~ObWXqK`~O1p%|^mQjAq( zD<&v%6%!Q&ifToTqE2zUqCwH9n5}451Qc@>^AxKTU5Y)5{`r)l=0=)E(+q)#o(^O^T*M z9q1@m# zR2h7RT0^~|*$^IVOU_;XgFZ_*l^Ks*>J^hl~?gvUe6nO6Cced@csBSegvP+ zkLI)Zv3x#X!k6)r_$hoH-^9=1{d^0*fL}xvelfq4zn5RnckJ#;1+18P6K83Lr3oRFDe}p^q>? z7$#H*Glf|~lQ2i{3oC@Xg?oh6!Wv&;8dYs~HDPV*M?R`WLV4)YV{r_8&}FPQ&ne%XB7{DwLBmieUl zee)^v$L60b8jIO7(2{BKTKtyPmQ9vNESoKzmMxa8mJcmwE#F&ywESebXt`wh%ZjYn zDzVC}tW~f^S!1kbYm0TUb*Xi^b%pgk>ly2p)~~GJ*oN7%ZRNJfwyC!1wi&icTeYpm z)?#b5&9~iYTWAZ~+H6aLwq>^Mwv)Es>=yedd%b;y{cig`_WSJ}_O149_8sEb9c zOB@>%OT|fIjaV->h)rU%7!VhWtHcfBHgTu;l(B4knGMQW^kI84;%phhkGlUt+6f#9jaj+X{8JtBju{-!anXE1WIlKpz;Mv`o;jpO$ zmcWa!gA$U#GqO*Qo;^K2e??`tN^fDXO13Icz)9Vzs(e-c!g7CPsVb{*TE!&)8Kg!U zq(wbZf8^YPdZDLLZ`23%Mg33~%0@Y01Q8^Ng*b?Z1TcYl3mSk1A{)w}j~fj_gOLL) zkPanObuyH~TzEEQ*RZm%{QOFX|xP2M?th=n6tR7u&S!O zaJ+X&(Gm+CiE5QFtZIfFJ)lN-=xv;~z8_f!;58c*$Z=VlG{ z`^I}|hR08URA5>F3bt&VuNfba@*3J6JitlRz#Y`U16-UkyHw79oPX5Hjk}hoPNevf~js3d)brQRJ*eN1$yjItJ~)6YQyNk%>;C zk3-~B(7qOZ0v*7UpIzuHk20M_pCh53!r~nI3_3yvbgD;R(CA)(&NRASa0mBj3-i&X zkPDZgO9%y#61akXK+Xnq6@81oL)XxCbOU`4T_F>?L3elxdO*(x^dq{7ZlT*0F?Y~i z=mk&1P#8^tQV2!VI-hQ5cXS^sk3ZdA>iK4+ZY_+8a=QJ$73@R>Tm)!!9d8Z!xo$fd5{lo_n3+@Pt~X> z1hTy4CH~TIg0KV4Uk@ofe=D3H+!!|*k(1ZMSM2vylowV`tHX^^jU&^D!XK^=*Y__~ zgq!136bP3Q6u_`Z2}Q)VrX_^i;B?#;hQkOL`L_~^R7@1oe*ydh67Cj8`KZTG{urJq zaw%{NIAgFg-%Fc?v^X1;;{IrJa0wrqT@0xae{yl2J137~z7FT2nh4E}2NiIJoV@Hw z{=%X%?;~gHu{-2$#DgI;?RY4Rft270J}#h+26+@NM$Qem0FTCnxCneO7REu@2JFFJ zJO-D*c<@6t%mL4kEbkcqAfIV4%7ycP;YoUHSEP~_g3XgYauCJstyc$(g zj;lgyD)0n65m!P&IaI&|n79EsPzIiiY~co8MSH0yI8&I?NEI)#vDAC!XG~a zlWOs^Fqv-s!w}ydFTjiH@bh>fOo3Sd(alTna#{`e1-uk5gQ+kLrq|;jvf&qD2Guf? zR>M4bYT%($j?C)yVN68%*W%hI`0FVD2AECx1K@t-BjsHc=8fcI3x0Lf!)%1xS3TYm zX<*@c!`txokRPwXGd*ij2E~M@fa9O4D6gt0^Y-$U`Ms5)7)A}*jrSnu`t{(665hgl zL+o$EyjuJY%#ViQ{ZJV8;{)&T*hC+QV2e>;3~fUgys!)@E5H8{(jcK?@ zBdD(>O<)5prRXsj-H}4lXmyb0B$c#4t6(E+f(B?DB7`4Gh&-MF{D>&8$2-0v&o{m# z_=+kqKsu2w56$TcuYx-&x;yFdPH|a|ksJ6znq#ta1w2(svgccTpqn0$M zile|I`DD;T9fM)}BOSwv$neK7N=A{0FZPDfAci=b0Tvv=LVM zTedul2_us$TDMsi-`K(NN|jop)y1%}mPD&7Ii-0^x3hdwSy=&RZJpN2mex8wI5Ktw zF-pOuB!RCrfT~sm9dKvj;`s!VIam~zCRc+7w82$z=^brJcE|r4y=b4wE2c;*kF?%8 zyYtcX)u=Jwq-nF@^|-El46vXt;NoV?pt@6R9ohvu#5WDtl2Thx0fT+zo{A|C1f)7o z+mg~+J$`1U(FsK;6(v_CY za8gdDlX>JtQcvC_?~~KyJ90fhz9&DDTjUP;nfyY2CBKI;h6s*))4RxHA94@g4WBP$ zISJA*MNfN*!g@+tfof>=vuR(XoKJq>sgQDPVvm|)V;D-YWIZ8uX z9E`V&;vdmYhG=ji_(`Ljzfezysi)|0?hbZJY!#b9E|V|GW%vv}hYR!+{1<)u7robo zroc>26E*fG`6)aFlG}6&{DMw_P_aU6IMGL8=(wWe59jQp`_^U7bQ z&5#}e3ki%w#a{i(a2ZTb%CKZGjhQAC3!%GS=!CurKhgV3=$=PUYs#s`ZQ3#&!gew3 zseoHl0Fy!Oy8WbGokd6Hn2TY{f+y_BR`Mm&kI6!dm>i}*lS7^U9sZ;juKU#(!Tkr) z^M)}aBhp7u>3@Wz7f|W##}Y#Y14G?zUEZo0A5s!VrZ>ERKg0TCUgu?S}n7(8XF(4-k2;Me{dMu)G_FOA!UkaX1MnPj-)gGFzBe-Ff~(zZWpA#ds93qhyqhI-;&* zBAG(wl0{@CSx4(-BWWPp$aeBN*+ssf<#LbFFgk{1I7VQMjKnw?7tK{uCYfo@v|!Sh zN@gvym$|@Pm&s*axMA$vu( zDx+RcJdDL40&gHS9z{HUp`1aL_SPDLOx19T3#gg$j8Vh z%Ac37lJAheBmYExN1;?CD3TSKieZXLiYba|iW!PoiW1TATQ%D?uWNQ`&TGEaT-SWBxv9CWxuf~7R<6})SuLj(wDDS#)}pm)leF1d zuXdJpo_2wDp?0zMCG8gNR_$xr9on7R-P$*_Z)rc$9@YLsdqR6k`-%3n_N?}t_G|4; zoko|a>!=%|^XNdgSQmI%w@$ZSSEt*c+oap9dsVkr_pWZAZolrJ?vU=V?uhP~?pBOG zCOu|oOdw`M%!!y&F&APk#$1m1CgxhqjhG)|ZpQq~%Gel|WjWTsn%SmoD%+0jz-F)m z*jzTB9mEb{hq1-%ShkEUXD6_gY=Et1pJAV6m$NI_ngF|s-N-huTiC7a9`+!6h&{|6 zVZYR~dXwIvZ=p}qx7MfYyXbr9`{;A^rTPl}RQ(M7EPX(~Qol;SQNLaPx_*~_kN!>l ze*HoHA^lE3p}o*k$P#jd0Ya`YR2VLd6bghwVVvL>s)gr-=Y>VW65&N* zrLbC9Bdis62yY9Ag`>hhgpe8;=-|87~;W zGu|-%V7z7g$#~azPt=G8Q50jvc+n&}#YSQiv6+}6riv}ZPGY7wSoDY`0nsOxiRI!1 zah3?;9PwFkzPLcF5m$?A#C76&u}<6}?h^NiZ;5-wcg3UPaq*=1iFjH(D_#;Wi(iXZ z#Gk~U#b3nV#6QG8C8fkloFqs_Ns=5=Gbu$%m0C*eqz+Ps)LH5(0p{F*Io~|UJj7gRE;f73C1#&_oO!Bwx_PE~w)u1O z74x^|Yvvo4c9tHNUY6dLzLr-k+br)|_F48@4q6Ub4qJ{`j#)mpoVWbT@}=dX<+9}) z%T>#FiTcFU#QemmiR%&%CEiHuTPIj6t$yno>pRwqHkqxNt-o!GZLV#BZJ}+kZMkiQ zt;V*>)?nLXJ7ha-J7PO#J8nB^``GqR+eO=D+c&nWw(o4$ZQt8|wB1UIO=_DoA_WR_M!Gt`&fIKz1%** zUTL3XpJJb8UvJ-Uzv56kS~&6@GaU;YOB_ob%N;8ns~u|`YaQDhI~;F2-f_I=IOaIv z_}FpU@u}l8#}&tqj^CX+r`{ Date: Thu, 20 Sep 2018 14:31:41 +0800 Subject: [PATCH 3/3] + (NSArray *)ds_allMethodsForJS; --- .../UserInterfaceState.xcuserstate | Bin 12088 -> 12522 bytes dsbridge/InternalApis.m | 2 +- dsbridge/JSBUtil.h | 2 +- dsbridge/JSBUtil.m | 6 ++---- 4 files changed, 4 insertions(+), 6 deletions(-) diff --git a/dsbridge.xcodeproj/project.xcworkspace/xcuserdata/xuejinghao.xcuserdatad/UserInterfaceState.xcuserstate b/dsbridge.xcodeproj/project.xcworkspace/xcuserdata/xuejinghao.xcuserdatad/UserInterfaceState.xcuserstate index d6b5b549296115a2867332726e2590ac0ee6f665..50f1a1426a3ee24af3e80acda826f717df446fb7 100644 GIT binary patch literal 12522 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 diff --git a/dsbridge/InternalApis.m b/dsbridge/InternalApis.m index 868eb58..b5ebff7 100644 --- a/dsbridge/InternalApis.m +++ b/dsbridge/InternalApis.m @@ -11,7 +11,7 @@ @implementation InternalApis -- (NSArray *)ds_allMethodsForJS{ ++ (NSArray *)ds_allMethodsForJS{ return @[@"hasNativeMethod:", @"closePage:", @"returnValue:", diff --git a/dsbridge/JSBUtil.h b/dsbridge/JSBUtil.h index 801c7ea..7e6e622 100644 --- a/dsbridge/JSBUtil.h +++ b/dsbridge/JSBUtil.h @@ -20,7 +20,7 @@ _Pragma("clang diagnostic pop") \ /** All methods for JS in a class. */ -- (NSArray *)ds_allMethodsForJS; ++ (NSArray *)ds_allMethodsForJS; @end enum{ diff --git a/dsbridge/JSBUtil.m b/dsbridge/JSBUtil.m index 8353d0e..8dfeaa8 100644 --- a/dsbridge/JSBUtil.m +++ b/dsbridge/JSBUtil.m @@ -62,13 +62,11 @@ +(NSArray *)allMethodFromClass:(Class)class NSArray *array; NSMutableSet *methodSet = [NSMutableSet set]; Class cls = [class class]; - id obj = [cls new]; - while ([obj respondsToSelector:@selector(ds_allMethodsForJS)]) { - NSArray *array = [obj performSelector:@selector(ds_allMethodsForJS)]; + while ([cls respondsToSelector:@selector(ds_allMethodsForJS)]) { + NSArray *array = [(id)cls ds_allMethodsForJS]; [methodSet addObjectsFromArray:array]; cls = class_getSuperclass(cls); - obj = [cls new]; } array = methodSet.allObjects;