美文网首页
iOS 如何包装结构体

iOS 如何包装结构体

作者: IMKel | 来源:发表于2017-11-28 16:18 被阅读90次

大家都知道,iOS中数组是无法存放基本数据类型的。

  • 基本数据类型转对象,这个我相信大家都知道。
    int a = 10;
    NSNumber *aNumber = @(a);
    NSMutableArray *arrM = [NSMutableArray array];
  • 那么结构体呢?
    结构体我们分成两种,第一种是系统的,第二种是自定义的。

    • 系统结构体包装成对象
      CGPoint point = CGPointMake(0, 0);
      NSMutableArray *arrM = [NSMutableArray array];
      [arrM addObject:@(point)];// 将系统结构体包装成对象保存到数组中
      for (NSValue *obj in arrM) {
          CGPoint point = [obj CGPointValue];// 从对象中获取结构体
          NSLog(@"point = %@", NSStringFromCGPoint(point));
      }
    
    • 自定义结构体包装成对象(注意点:自定义的结构体只有进行CG_BOXABLE包装之后才能像系统结构体那样子操作)
      // 这是视频信息结构体。包含视频的 大小 和 时长 
      struct VideoInfo {
      double videoSize;
      double videoDuration;
      };
      typedef struct CG_BOXABLE VideoInfo VideoInfo;// 这是最关键的代码。去看系统的结构体,你也会发现系统的结构体也做了这一步操作。
    
      // 自定义结构体的包装
      VideoInfo info;
      info.videoSize = 2533329.0;// 假设视频大小为2533329.0
      info.videoDuration = 10;// 假设视频10s
      NSMutableArray *arrM = [NSMutableArray array];
      [arrM addObject:@(info)];// 自定义结构体经过CG_BOXABLE之后可以像系统结构体一样操作。、
      for (NSValue *obj in arrM) {
          // 从对象中获取结构体,这里和系统结构体的获取方法有点差异。
          VideoInfo info;
          [obj getValue:&info];
          NSLog(@"size = %lf, videoDuration = %lf", info.videoSize, info.videoDuration);
      }
    

相关文章

  • iOS 如何包装结构体

    大家都知道,iOS中数组是无法存放基本数据类型的。 基本数据类型转对象,这个我相信大家都知道。 那么结构体呢?结构...

  • iOS中的NSNumber与NSValue

    NSNumber(只能包装数字类型) NSValue(可以包装结构体)

  • 结构体

    结构体是什么? 结构体就是把多个变量包装在一起,结构体也可以作为类型使用,你可以定义结构体变量,结构体指针。 为什...

  • iOS结构体

    iOS结构体 1.结构体的创建 struct name { int age; int phone; } 初始...

  • SwiftUI:属性包装器如何处理结构体

    您已经了解了SwiftUI如何通过使用@State属性包装器将变化的数据存储在结构体中,如何使用$将状态绑定到UI...

  • iOS中编写高效能结构体的7个要点

    iOS中编写高效能结构体的7个要点iOS中编写高效能结构体的7个要点

  • iOS结构体

    结构体尺寸 1.结构体中每个数据成员的偏移位置是数据成员本身尺寸的倍数。2.结构体的尺寸是最大基础类型数据成员尺寸...

  • (IOS)结构体

    结构体作用 结构体和其他类型基础数据类型一样,例如int类型,char类型 只不过结构体可以做成你想要的数据类型。...

  • 深挖iOS底层(3)

    深挖iOS底层(3) Sizeof() 定义:打印当前数据类型的占用大小,单位为字节sizeof(结构体):结构体...

  • 利用NSValue来包装结构体

网友评论

      本文标题:iOS 如何包装结构体

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