objective-c - OC编译器是如何处理执行某段代码的?
ringa_lee
ringa_lee 2017-04-24 09:14:03
0
2
428

 CGRect frame=  self.bg.frame;
    
    [UIView   beginAnimations:nil context:nil];
    [UIView  setAnimationDuration:2];
    
    long tag=sender.tag;
    switch (tag) {
        case 10:
            frame.origin.y-=30;
            break;
        case 20:
            frame.origin.y+=30;
            break;
        default:
            break;
    }
    
    self.bg.frame=frame;
    [UIView commitAnimations];

中间这部分代码将被执行动画。
我有一个比较奇葩的问题,就是这部分动画代码,编译器是如何获得的呢?

我的心里是这么想的,当然是伪代码表述:就是用String去截取,把这段代码截取出来去执行。。

求教。。

还有顺便一个问题,我一起问了吧。
self.bg.frame=frame;这样位置就变了。。那么OC或者说IOS肯定是不断监听这个属性的变化的。。那么IOS中事件模型是怎样的呢?

ringa_lee
ringa_lee

ringa_lee

全員に返信(2)
大家讲道理

別の方法もあります。それは、順次実行する必要があるということです。 。 。 commitAnimations に到達した場合のみ、実際の送信が行われます。

リーリー

操作の結果:
2015-08-28 1520.020 02 Calculator [1403:73936] 実行はここに達します beginAnimations2015-08-28 15
20.021 02 Calculator [1403:739] 36] 実行に達するここに setAnimationDuration2015-08-28 15
20.022 02Calculator[1403:73936] 実行はここに到達します 22015-08-28 15
20.022 02Calculator[1403:73936]想像

つまり、コードは順番に実行する必要があります。 。コードを抽出して実行することについては言及されていません。 self.bg.frame=frame; 実行すると、アニメーションのステータスを取得するような処理が必要です。 。

いいねを押す +0
迷茫

google: レンダー ツリー、レンダー ツリー

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート