iOS 结构体 定义变量注意事项以及保存到数组与读取

原创 2015年01月09日 09:42:34


typedef  struct

{   CGFloat  x;

    CGFloat  y ;

}  point;


    结构体通常都是以上这样的,需要注意的结构体内定义的只能是基本数据类型的变量,而不能是对象。如若非要用结构体存放对象也可以,需要在对象前面添加标识__unsafe_unretained,如__unsafe_unretained UIImage *imageNew,但是这样也可能会出现一些奇怪的问题,所以不建议使用,需要定义对象时还是建一个类去存储。

    具体原因是因为:ARC需要在一个合适的位置插入成员的释放行为,在Objective-C中,编译器会把实例成员的release放在该类型的实例方法dealloc中。而由于标准的C结构体,即struct,是没有析构函数的,所以编译器无法在合适的位置插入成员的release操作。从而导致内存泄漏。所以,在ARC项目中,不做特殊处理是无法在struct中声明Objective-C对象的,除非明确指定放弃对所声明对象的内存管理责任,即楼上提到的,将对象定义为__unsafe_unretain,这样ARC就不会想办法插入release操作了


下面是结构体保存到数组与读取

typedef  struct

{   CGFloat  x;

    CGFloat  y ;

}  pointNew;


NSMutableArray *arrayOne = [NSMutableArray array];

//保存

for (unsigned i = 0 ; i<5; i++) {

    pointNew s;

    s.x = i;

    s.y = 1.0;

   

    NSValue *value = nil;

    value = [NSValue valueWithBytes:&s objCType:@encode(pointNew)];

    [arrayOne addObject:value];

}

//读取

for (NSValue *value in arrayOne) {

     pointNew s;

    [value getValue:&s];

    NSLog(@"%f",s.x);

}





版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

struct 结构体的用法简单介绍

struct 结构体的用法

Struct 在iOS中的集合中使用

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 // 定义结构体 ...

IOS_Struct结构体与NSObject对象的通用互转方法

这个应该是Struct结构体与NSObject对象的通用互转方法。 本文来自【小编我】 仅仅是个例子,自己举一反三。 遇到一个问题,如何将要MKCoordinateRegion 与 NSObj...

【iOS开发】结构体如何存入数组中

1、常见结构体的储存 比较常见的结构体:CGPoint  ,CGSize,CGRect。。。。。。我们如何存放到数组中呢?因为是结构体不是对象,不能添加到数组中,解决方法:把这些常见的结构装换成对象...
  • wm9028
  • wm9028
  • 2016年02月17日 18:03
  • 4715

IOS中的结构体保存到数组与读取

typedef struct {     CGFloat r;     CGFloat g;     CGFloat b; }TestStruct;  NSMutableA...

nil Nil NULL及NSNull 之间的区别

本文参考自:http://blog.csdn.net/xdrt81y/article/details/8981133 一、简介 初学iOS,里面的nil,Nil,NULL及NSNull 把我搞得有点...
  • hudashi
  • hudashi
  • 2016年06月28日 14:04
  • 1324

iOS中结构体数组

新手遭遇 结构体使用 问题

给定A, B两个整数,不使用除法和取模运算,求A/B的商和余数

给定A, B两个整数,不使用除法和取模运算,求A/B的商和余数。 1.   最基本的算法是,从小到大遍历: for (i = 2 to A -1)          if (i * B > A)...

配置SOIL库,实现纹理加载

SOIL 是一个用于向OpenGL中加载

SceneManager.LoadScene的使用方法

SceneManager.LoadScene的使用方法
  • XYK0318
  • XYK0318
  • 2016年03月17日 09:52
  • 18551
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS 结构体 定义变量注意事项以及保存到数组与读取
举报原因:
原因补充:

(最多只允许输入30个字)