Objective C中的基本数据类型需要管理内存??? 如,int,float等,还有结构体
2个回答
展开全部
为对象添加引用计数功能,是因为对象一般比较大,不会频繁地申请释放,而且对象本身带有的数据基本上也需要存在一段时间,使用的时候也会把对象的引用传到各种地方,所以,为了方便在对象使用完毕后能自动释放内存所以加入引用计数。这是一种自动释放动态分配内存的方式,和数据类型无关。
不管什么数据类型,包括对象或结构或你所说的基本数据类型,都是要根据内存分配的方式来管理内存。就算是int,如果你通过malloc(这个是c里的啊,OC里不知道是什么)申请一个int,也是需要显示地释放的。如果不是系统自动分配的空间,比如自动变量,这个空间在变量的有效范围外是会自动释放的。
不知道有没有说清楚,哈哈哈
不管什么数据类型,包括对象或结构或你所说的基本数据类型,都是要根据内存分配的方式来管理内存。就算是int,如果你通过malloc(这个是c里的啊,OC里不知道是什么)申请一个int,也是需要显示地释放的。如果不是系统自动分配的空间,比如自动变量,这个空间在变量的有效范围外是会自动释放的。
不知道有没有说清楚,哈哈哈
展开全部
首先,你把问题想复杂了,Objective C虽然有了它独有的OC对象可以通过引用计数的方式来进行管理,但是,本身他还是继承了老的C的规律,也就是,你提到基本类型数据,所以,一直被诟病的内存管理的不足问题(混乱问题)尤其是基本类型数据,依然是存在的,因为你去定义这些类型对象,去调用的他还是老的办法,并没有多出个什么步骤来,不过你提到了这个问题的话
我建议你看看这个对你是否有用
int,NSInteger,NSUInteger,NSNumber
1.当需要使用int类型的变量的时候,可以像写C的程序一样,用int,也可以用NSInteger,但更推荐使用NSInteger,因为这样就不用考虑设备是32位的还是64位的。
2.NSUInteger是无符号的,即没有负数,NSInteger是有符号的。
3.有人说既然都有了NSInteger等这些基础类型了为什么还要有NSNumber?它们的功能当然是不同的。
NSInteger是基础类型,但是NSNumber是一个类。如果想要在NSMutableArray里存储一个数值,直接用NSInteger是不行的
注:objective c毕竟是C的衍生产物,如果她将int 、float这些基本数据类型的管理方式,不是继承,而是全部改为OC那样的话,就是全部颠覆了,它就可以称之为新的语言了。
我建议你看看这个对你是否有用
int,NSInteger,NSUInteger,NSNumber
1.当需要使用int类型的变量的时候,可以像写C的程序一样,用int,也可以用NSInteger,但更推荐使用NSInteger,因为这样就不用考虑设备是32位的还是64位的。
2.NSUInteger是无符号的,即没有负数,NSInteger是有符号的。
3.有人说既然都有了NSInteger等这些基础类型了为什么还要有NSNumber?它们的功能当然是不同的。
NSInteger是基础类型,但是NSNumber是一个类。如果想要在NSMutableArray里存储一个数值,直接用NSInteger是不行的
注:objective c毕竟是C的衍生产物,如果她将int 、float这些基本数据类型的管理方式,不是继承,而是全部改为OC那样的话,就是全部颠覆了,它就可以称之为新的语言了。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询