欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

OC对象,自动释放池,OC与C语言的区别

程序员文章站 2022-12-24 08:13:54
在C语言中,编程都是面向过程的编程,每一个代码块都严格按照从上至下的顺序执行,在代码块之间同样也是这样, 但是在OC中往往不是这样,OC和C++、java等语言一样,都是面向对象的编程语言,在代码的执行上有很大的跳跃性。 OC是C语言的超集,对C语言所有的功能进行了封装,例如,OC对C语言的字符串进 ......

    在c语言中,编程都是面向过程的编程,每一个代码块都严格按照从上至下的顺序执行,在代码块之间同样也是这样,

    但是在oc中往往不是这样,oc和c++、java等语言一样,都是面向对象的编程语言,在代码的执行上有很大的跳跃性。

    oc是c语言的超集,对c语言所有的功能进行了封装,例如,oc对c语言的字符串进行了封装形成了oc的nsstring,对字符串进行封装形成了nsarray;

    oc中可以这样定义一个字符串:nsstring *str = @"";在这里对这句话加一个说明,nsstring 是定义字符串的关键字,* 是在定义oc对象类型变量时必须使用的,

str是你定义的变量名,@是将c基本对象类型对象化,在赋值和输出的时候会普遍用到,引号之间就是你想赋值给str的内容(在这里即为空),最后和c语言一样以分号结尾,

同样我们可以定义一个数组类型的变量:nsarray *arr = @[@"",@""];(这个数组里面有两个元素,两个元素都为空);

自动释放池就是用来自动释放内存的,当一个对象是用strong,copy,retain创建,并且在自动释放池中,每过一段时间系统会自动去判断这个对象的生命周期,即这个对象是否在被使用,如果已经没有被使用,那么这个对象将被释放掉,在arc机制(xcode默认arc)里面通常不用自己写,也有一些特殊情况会要自己去写,一些短时间内创建大量内存的,比如视频操作。

在c语言中输出用printf;但是printf只能输出c语言的基本对象类型,不能输出对象类型,所以在oc中用nslog进行输出

输出的格式为:nslog(@"%@ %@",str,arr);