oc语言优点:
1.category是非常实用的扩展机制,可以很方便的为一个已有的类添加属性或者方法,而不需要笨拙的去继承。
2.运行时多态的概念,可以让一个类的对象动态的以其他类行为去执行(oc中多了很多运行时态的机制,其中id的特殊用途,可以通过id类型的变量,调用不同类的同名函数,即使这些类没有任何关系)。
3.arc不用多讲了吧
4.oc中类没有所谓的构造函数和析构函数,所以如果一个类中有其他类的数据(动态申请的),那么释放内存就不能依赖析构函数,但可以采用重写-(id) free来实现类中所有数据释放。
5.oc中成员变量也有三种访问权限,@public,@protected,@private。但默认的是@protected,而c++中默认是private。
6.oc中成员函数只有两种,一种是实例函数,一种是类函数。实例函数就是c++中的public函数,类函数就是public中的static函数。
7.oc中成员函数如果要接受多个参数,则需要每个参数前加冒号(虽然教科书上说参数后加冒号,但就我看来说成参数前加更能让c++programmer理解)。例如-( int ) set : ( int ) a : ( int ) b ;每个形参前还可以加一个参数名,并成为函数名的一部分。例如-( int ) set : ( int ) a and : ( int ) b;在使用时[ classtest set : 10 and : 12 ]; 起初看起来确实不习惯。。。
8.oc中还多了一个id类型,通过测试,id就是指针。
9.oc不是一个过度复杂的 c 衍生语言。
10.oc可以给已类添加新的函数。@interface classexist( newmethodgroup )-@end,@implementation classexist( newmethodgroup )-@end。
11.oc可以将让某类a,代替某类b。通过poseas关键字。例如:[fractionb poseas: [fraction class]];此后使用fraction类时,就转换成使用fractionb了
12.oc还有protocol概念。protocol实际是一组函数,支持改协议的类都应重写这些函数。通过@protocol-@end来声明protocol。类中通过《protocol1,protocol2,。。。》来表示支持某个协议。如@interface a : object 《 nscopying, nstransform 》-@end表明类a继承与object类,并支持两个协议(nscopying, nstransform )。
13.oc最后总结,其类实现以c为基础。@interface classtest - @end是相当于一组宏,帮你将类的所有成员变量声明组织为一个结构体,成员函数实际就是普通函数,是在原来成员函数基础上,修改函数名称,添加结构体指针到第一个参数。id类型实际也就是指针。难怪oc的类看起来不像c的一般语法,原因就是其源自c的一般语法,采用新的类脚本的方式,实现的类功能。
14.由于都是c衍生出的面向对象的语言 所以可以和c++混合编码。(百度地图api 就用到了)
oc语言的缺点:
1.不支持多重继承 只有多级继承。
2.使用动态运行时类型,所有的方法都是函数调用,所以很多编译时优化方法都用不到。(如内联函数等),性能低劣。
3.不支持运算符重载(“命名空间”,也称“名称空间” 。vs.net中的各种语言使用的一种代码组织的形式 通过名称空间来分类,区别不同的代码功能 同时也是vs.net中所有类的完全名称的一部分。因为人类可用的单词数太少,并且不同的人写的程序不可能所有的变量都没有重名现象,对于库来说,这个问题尤其严重,如果两个人写的库文件中出现同名的变量或函数(不可避免),使用起来就有问题了,为了解决这个问题,引入了名字空间这个概念,通过使用 namespace xxx;你所使用的库函数或变量就是在该名字空间中定义的,这样一来就不会引起不必要的冲突了。)
4.程序执行效率:汇编》c》oc
了解什么是条形码、二维码、RFID
2019年5G将正式进入商业阶段,PCB产业在5G时代量价齐升
小米第二款5G手机处于待命状态,三证齐全,被堪称价格屠夫
材料力学性质的基础认识——应变
曝苹果FaceTime存在重大缺陷 可在对方接听或拒绝接听前听到对方谈话
oc语言的优缺点有哪些
程序员前景分析
施密特电路的结构和工作原理
2018年全球工业自动化设备(IAE)市场估计约达到2,098亿美元
使用TensorFlow生成的高分辨率抽象艺术图片的实现解析
Nexperia发布具备市场领先效率的晶圆级12和30V MOSFET
HarmonyOS 应用开发-ClickableImageJsDome体验
Python 开发人员最终凭借 PyCharm 获得强大集成
特斯拉浑身都是传感摄像头,却缺行车记录仪?马斯克是这样回应的
长安汽车结合奇石乐系统使得不同生产过程的执行和监控成为可能
联发科Helio X30出货被10nm良率问题拖累
陆芯精密划片机:IC晶圆划片的封装工艺流程
苹果将推出iCloud存储照片和视频传输到谷歌相册的服务
基于嵌入式操作系统与Internet网络实现智能终端控制系统的设计
棉花纺织机器可搭配这个步进