OC与C语言的一些区别
- Foundation.h
(1)我们称之为主头文件, 主头文件中又拷贝了该工具箱中所有工具的头文件, 我们只需要导入主头文件就可以使用该工具箱中所有的工具, 避免了每次使用都要导入一个对应的头文件
(2)工具箱的地址: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks
(3)规律: 所有的主头文件的名称都和工具箱的名称一致
所有的主头文件都是导入了该工具箱中所有工具的头文件
- import与include
(1)import的功能和include一样, 是将右边的文件拷贝到当前import的位置
为了降低程序员的负担, 防止重复导入, 避免程序员去书写头文件卫士, OC给出来一个新的预处理指令import
(2)import优点: 会自动防止重复拷贝
(3)因为OC完全兼容C, 所以可以在OC程序中编写C语言代码
并且可以将C语言的源文件和OC的源文件组合在一起生成可执行文件
- printf和NSLog的区别
(1)NSLog会自动换行
(2)NSLog在输出内容时会附加一些系统信息
(3)NSLog和printf接收的参数不一样
- 函数与方法
C语言函数:
void about(); //声明void about() //实现{printf("model = cpu = size = color");}
OC方法:
- (void)about; //声明@implementation IPhone //实现- (void)about{NSLog(@"打印本机信息");}@end
(1)C语言中函数分为声明和实现
OC中定义一个类也分为声明和实现, 也就是说以后我们在OC中定义类, 就是在写类的声明和实现
(2)OC中的行为和C语言中的函数一样, 都是用来保存一段特定功能的代码
C语言中定义一个函数, 分为声明和实现, 声明写在.h中, 实现写在.c中
OC中定义一个方法, 也分为声明和实现, 声明写在@interface中, 实现写在@implementation
(3)C语言的函数分为两种: 内部函数和外部函数
OC中的方法也分为两种; 类方法和对象方法
(4)类方法只能用类名调用, 对象方法只能用对象调用
OC中的类方法用+表示, OC中的对象方法用-表示
(5)编写C语言函数的规律: 1.确定函数名称 2.确定形参 3.确定返回值 4.确定返回值类型
编写OC方法也有规律, 规律和C语言一模一样
(6)注意: OC中的方法, 如果没有形参不需要写(), 而是直接写一个;
为什么OC中没有形参不需要写()呢?
因为OC方法中的()有特殊的用途, OC方法中的()是用来扩住数据类型的
(7)方法和函数的声明
C语言函数:
int signal(int number);
OC语言方法:
- (int)signal:(int)number;
注意: OC中的方法如果有参数, 那么每个参数的数据类型前面必须加上一个:
注意: 当前这个有参数的方法它的方法名称是 signal:
冒号也是方法名称的一部分
有返回值并且有多个参数的:
C语言函数:
int sendMessage(int number, char *content);
OC语言方法:
(int)sendMessage:(int)number :(char *)content;
注意: 上面这个方法的方法名称是sendMessage::
(8)1 函数属于整个文件, 方法属于某一个类
方法如果离开类就不行
2 函数可以直接调用, 方法必须用对象或者类来调用
注意: 虽然函数属于整个文件, 但是如果把函数写在类的声明中会不识别
3 不能把函数当做方法来调用, 也不能把方法当做函数来调用
(9)方法的注意点:
1 方法可以没有声明只有实现
2 方法可以只有声明没有实现, 编译不会报错, 但是运行会报错
3 如果方法只有声明没有实现, 那么运行时会报:
reason: '+[Person demo]: unrecognized selector sent to class 0x100001140'
//发送了一个不能识别的消息, 在Person类中没有+开头的demo方法
reason: '-[Person test]: unrecognized selector sent to instance 0x100400000'
OC与C语言的一些区别相关推荐
- c与python的区别-Python与C语言有什么区别?
答题练手.手机排版不佳请谅解~ 更新2:还是关于编译和解释 二者的本质区别是在编译/解释器的总体工作方式上的,编译器是off-line,解释器是on-line.编译器把整个程序读进来,进行一系列变大变 ...
- php和python区别-PHP与Python语言有哪些区别之处?选择哪一个好?
其实针对不同阶段的学者来说,他们的需求自然也有所不同.本篇文章主要分析了php和python哪个好以及介绍PHP与Python的区别之处,希望对还在为学习PHP和Python中哪一个语言而摇摆不定的朋 ...
- python和c语言有什么关系-Python与C语言有什么区别?
答题练手.手机排版不佳请谅解~ 更新2:还是关于编译和解释 二者的本质区别是在编译/解释器的总体工作方式上的,编译器是off-line,解释器是on-line.编译器把整个程序读进来,进行一系列变大变 ...
- python是c语言写的吗-Python与C语言有什么区别?
答题练手.手机排版不佳请谅解~ 更新2:还是关于编译和解释 二者的本质区别是在编译/解释器的总体工作方式上的,编译器是off-line,解释器是on-line.编译器把整个程序读进来,进行一系列变大变 ...
- oc c语言,OC之C语言的基础知识
OC 之 C语言基础 for循环 实现三角形 1.[文件] Person.h ~ 363B 下载(3) // // Person.h // Hello // // Created by DGS ...
- 数据操作语言DML及数据定义语言DDL的区别
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 数据操作 ...
- c++和java哪个好学_【技术科普】C语言和java语言有些什么区别?
C语言和java语言有些什么区别? 可以打个比方吧: C语言就像一个初创公司的老板,由于人少经费少,从技术.财务.市场等都需要自己管,经常把自己累的跟狗一样: Java语言就像一个上市大公司的老板,人 ...
- C#与C++在语言层面的区别(不断补充)
C# [StructLayout(LayoutKind.Sequential)] 是什么意思?? 结构体是由若干成员组成的.布局有两种 1.Sequential,顺序布局,比如 struct S1 { ...
- python和c 的区别-Python与C语言有什么区别?
答题练手.手机排版不佳请谅解~ 更新2:还是关于编译和解释 二者的本质区别是在编译/解释器的总体工作方式上的,编译器是off-line,解释器是on-line.编译器把整个程序读进来,进行一系列变大变 ...
最新文章
- [gic]-ARM gicv3/gicv4的详细介绍-2020/08
- 子屏幕selection-screen
- JEESZ-SSO解决方案
- 在阿里、腾讯、美团工作有什么区别?
- python自动化测试脚本可以测php吗_自动化测试,用Python还是Java?
- 【.NET 遇上 GraphQL】使用 Hot Chocolate 构建 GraphQL 服务
- 测试Spring的“会话”范围
- 数据行业工作3年,我靠这7个能力,成为领导青睐的高级数据分析师
- 中国最闷声发大财的城市,人均GDP超杭州
- [bz][LINUX command 002] 嵌入式常用的命令
- 静态页面编写规范02
- visio的一些用法
- 卡诺模型案例分析_需求分析神器 | 如何用卡诺模型分析需求
- 易语言和c语言语法哪个接近点,易语言如果真、如果和判断知识点总结
- 增强学习系列之(二):实现一个简单的增强学习的例子
- 广东开放大学成本会计
- iOS越狱程序开发框架
- Android自动化的一般方法
- elementui 合并单元格
- 场内指数基金(ETF)有哪些(附完整名单)
热门文章
- squid代理服务器应用及它的几种代理模式
- Java上路09-多线程
- python0为真还是假_python 中对象真和假的概念是什么
- mysql乐观锁 秒杀_使用数据库乐观锁解决高并发秒杀问题,以及如何模拟高并发的场景,CyclicBarrier和CountDownLatch类的用法...
- 代码已开源,一起魔改大西瓜!
- AutoSar DaVinci Developer工具的基本介绍
- mysql if 多个,mysql if条件中的多个条件
- Android Percent Layout 安卓百分比布局
- python geometry用法_Arcgis python geometry
- 远程办公常态化,网络安全迫在眉睫,“零信任安全”的风口到了吗?