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);

}





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

相关文章推荐

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

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

flappy bird游戏源代码揭秘和下载

最近火爆全球的游戏flappy bird让笔者叹为观止,于是花了一天的时间山寨了一个一模一样的游戏,现在把游戏的思路和源码分享出来,代码是基于javascript语言,cocos2d-x游戏引擎,co...

用 SpriteKit 做一个逃逸游戏 (3)

移动球拍我们需要移动它!移动球拍需要接收触摸事件。你可以在 MyScene 中实现以下方法以接收触摸事件: -(void)touchesBegan:(NSSet*)touches withEven...
  • kmyhy
  • kmyhy
  • 2014-02-07 13:12
  • 3550

Jenkins构建Android项目持续集成之单元测试及代码覆盖率

单元测试  在软件开发中一直在推崇TDD(测试驱动开发),但是一直不能被有效的执行或者并不是真正的测试驱动开发(先开发后写单元测试),因为我们懒!而Android开发又是大多应用层面的开发,很多都是和...

JSON快速入门指南

本文从JSON定义、语法规则及JSON解析与序列化等方面对JSON数据格式进行简要的使用说明,并重点阐述对JSON.parse()和JSON.stringify()方法的使用。

iOS开发1小时快速入门

本文面向已有其它语言(如Java,C,PHP,Javascript)编程经验的iOS开发初学者,初衷在于让我的同事一小时内了解如何开始开发iOS App,学习目标包括: 能使用Xcode IDE...

Sprite Kit学习笔记(二)SKSpriteNode

笔记一给大家大概介绍了Sprite Kit,并且通过一个简单的demo让大家对Sprite Kit有初步的认识,今天接着前面的学习内容。在demo中我们简单的使用了SKSpriteNode,我们没有给...
  • kobbbb
  • kobbbb
  • 2013-06-15 23:46
  • 9383
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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