美文网首页
setFrame: 汇编参数

setFrame: 汇编参数

作者: 偶是星爷 | 来源:发表于2019-06-24 20:02 被阅读0次

    测试代码 1:

    void test(CGRect rect)
    {
        printf("%f", rect.origin.x);
        printf("%f", rect.origin.y);
        printf("%f", rect.size.width);
        printf("%f", rect.size.height);
    
    }
    
    int main(int argc, char * argv[]) {
        @autoreleasepool {
            
            test((CGRect){1.1,2.1,3.1,4.1});
            
            return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
        }
    }
    

    反汇编看一下

    1

    很明显,CGRect的4个值放在d0、d1、d2、d3中。

    测试代码 2

    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        
        [self testFrame:(CGRect){1.1,2.1,3.1,4.1}];
    }
    
    - (void)testFrame:(CGRect)rect
    {
        printf("%f", rect.origin.x);
        printf("%f", rect.origin.y);
        printf("%f", rect.size.width);
        printf("%f", rect.size.height);
    }
    
    @end
    

    测试OC的方法,看有没有什么区别


    2

    OC的方法本质上和C调用方式没有区别,只是rect参数从参数1变成了参数3(前两个参数分别是self和SEL)。可以看到,CGRect的4个值还是放在d0、d1、d2、d3中。

    相关文章

      网友评论

          本文标题:setFrame: 汇编参数

          本文链接:https://www.haomeiwen.com/subject/wkkaqctx.html