recherche

Maison  >  Questions et réponses  >  le corps du texte

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_lee2774 Il y a quelques jours438

répondre à tous(2)je répondrai

  • 大家讲道理

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

    Il existe une autre façon, c'est qu'il doit être exécuté séquentiellement. . . Ce n'est que lorsque commitAnimations est atteint que la soumission réelle est effectuée.

    - (IBAction)move:(UIButton *)sender {
      CGRect frame=  self.bg.frame;
        
        [UIView   beginAnimations:nil context:nil];
        NSLog(@"执行到了这里beginAnimations");
        [UIView  setAnimationDuration:2];
        NSLog(@"执行到了这里setAnimationDuration");
        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;
           NSLog(@"执行到了这里2");
        [UIView commitAnimations];
           NSLog(@"commitAnimations");
      
    }

    Le résultat de l'opération :
    2015-08-28 1520.020 02 Calculatrice [1403:73936] L'exécution arrive ici startAnimations
    2015-08-28 15 20.021 02 Calculatrice [1403:73936] L'exécution atteint ici setAnimationDuration
    2015-08-28 1520.022 02 Calculatrice [1403:73936] L'exécution atteint ici 2
    2015-08-28 1520.022 02 Calculatrice[1403:73936] commitAnimations

    C'est-à-dire que le code doit être exécuté séquentiellement. . Il n'y a aucune mention de l'extraction du code et de son exécution. self.bg.frame=frame; Lors de l'exécution, il doit y avoir quelque chose de similaire à l'obtention du statut d'animation. .

    répondre
    0
  • 迷茫

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

    google : arbre de rendu, arbre de rendu

    répondre
    0
  • Annulerrépondre