美文网首页
利用NSValue来包装结构体

利用NSValue来包装结构体

作者: iOS安年 | 来源:发表于2019-01-16 18:32 被阅读9次
        // 1.利用NSValue包装常用的结构体
        CGPoint point = CGPointMake(50, 50);
        NSValue *value = [NSValue valueWithCGPoint:point];
        NSArray *valueArray = @[value];
        NSLog(@"%@", valueArray);
        
        // 2.利用NSValue包装自定义的结构体
        typedef struct {
            int age;
            NSString *name;
            double height;
        } Person;
        Person p = {20, @"annian", 1.8};
        // [NSValue valueWithBytes:<#(nonnull const void *)#> objCType:<#(nonnull const char *)#>]
        // valueWithBytes:接收一个指针,传递需要包装的结构体的变量的地址
        // objCType:传递需要包装的数据类型
        NSValue *personValue = [NSValue valueWithBytes:&p objCType:@encode(Person)];
        NSArray *personArray = @[personValue];
        NSLog(@"%@", personValue);
        // 从NSValue中取出自定义的结构体变量
        Person res;
        [personValue getValue:&res];
        NSLog(@"age = %i, name = %@, height = %f", res.age, res.name, res.height);
    

    相关文章

      网友评论

          本文标题:利用NSValue来包装结构体

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