>  Q&A  >  본문

objective-c - OC编译器是如何处理执行某段代码的?


 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_leeringa_lee2757일 전424

모든 응답(2)나는 대답할 것이다

  • 大家讲道理

    大家讲道理2017-04-24 09:16:03

    또 다른 방법이 있는데, 순차적으로 실행해야 한다는 것입니다. . . commitAnimations에 도달한 경우에만 실제 제출이 됩니다.

    으아아아

    작업 결과:
    2015-08-28 1520.020 02 계산기 [1403:73936] 실행이 여기까지 도달합니다.beginAnimations
    2015-08-28 15 20.021 02 계산기 [1403:73936] 실행은 여기까지 도달 setAnimationDuration
    2015-08-28 1520.022 02 계산기 [1403:73936] 실행은 여기에 도달 여기 2
    2015-08-28 1520.022 02 계산기[1403:73936] commitAnimations

    즉, 코드는 순차적으로 실행되어야 합니다. . 코드를 추출해서 실행한다는 언급은 없습니다. self.bg.frame=frame; 실행시 애니메이션 상태를 얻는 것과 비슷한 것이 있어야 합니다. .

    회신하다
    0
  • 迷茫

    迷茫2017-04-24 09:16:03

    google: 렌더링 트리, 렌더링 트리

    회신하다
    0
  • 취소회신하다