2009-07-24 6 views

risposta

96

Sono nomi diversi perché UIView e CALayer sono diversi e hanno una terminologia diversa associata ad essi, ma sono funzionalmente equivalenti. Se si smonta clipsToBounds si vedrà solo chiama masksToBounds (disassmebly dal quadro simulatore, in modo x86):

-(BOOL)[UIView(Rendering) clipsToBounds] 
    +0 3091938a 55    pushl %ebp 
    +1 3091938b 89e5   movl  %esp,%ebp 
    +3 3091938d e800000000  calll 0x30919392 
    +8 30919392 59    popl  %ecx 
    +9 30919393 8b4508   movl  0x08(%ebp),%eax 
    +12 30919396 8b5004   movl  0x04(%eax),%edx   (CALayer)_layer 
    +15 30919399 8b8186cb1301 movl  0x0113cb86(%ecx),%eax masksToBounds 
    +21 3091939f 89450c   movl  %eax,0x0c(%ebp) 
    +24 309193a2 895508   movl  %edx,0x08(%ebp) 
    +27 309193a5 c9    leave 
    +28 309193a6 e92e211801  jmpl  0x31a9b4d9 
+0

wow, impressionante! come si arriva a questi dettagli? potrebbe essere fatto solo in xcode quando si costruisce o c'è uno strumento necessario per verificare cosa sta succedendo? – Thanks

+3

Per un rapido smontaggio, utilizzo otool, che fa parte degli strumenti di sviluppo. Se percorrendo un sacco di codice tendo a usare otx per generare un elenco di assembly completo incluso il fare tutte le ricerche sui selettori per me. –

+0

Come puoi dire dal guardare a quello, che chiama solo masksToBounds? – Macmee

Problemi correlati