OC对象,自动释放池,OC与C语言的区别
程序员文章站
2022-05-29 12:34:03
在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);