快速让你明白Objective-C的语法(和Java、C++对比)
很多想开发iOS,或者正在开发iOS的程序员以前都做过Java或者C++,当第一次看到Objective-C的代码时都会头疼,Objective-C的代码在语法上和Java, C++有着很大的区别,有的同学会感觉像是看天书一样。不过,语言都是相通的,有很多共性。下面列出Objective-C语言的语法和Java,C++的对比,这样你就会很容易Objective-C的语法是怎么回事了。
先目睹一下Objective-C头文件和实现文件里都有什么:
头文件:
实现文件, 类似于C++的.cpp文件:
一、函数的对比
helloworld方法
Java 语言:
- public void helloWorld(bool ishelloworld) {
- //干点啥
- }
C++语言:
- void helloWorld(bool ishelloworld) {
- //干点啥
- }
Objective-C语言:
- -(void) HelloWorld:(BOOL)ishelloworld{
- //干点啥
- }
前面带有减号(-) 的方法为实例方法,必须使用类的实例才可以调用的。对应的有+号, 代表是类的静态方法,不需要实例化即可调用。
二、消息。
消息的定义:向对象发送信息。
消息是ios的运行时环境特有的机制。 和C++,Java下的类,或实例调用类或实例的方法类似。我这说的是类似,他们的机制实际上是有很大的差别。
例子:
[object message]
- [object message:param1 withParameter:param2]
- NSString *string;
- string = [[NSString alloc] initWithString:@"Hello"];
上面的代码类似于:
java/c++:object.message()
java/c++:object.message(param1,param2)
java/c++:
string *str ;
str = new string("Hello");
三、Import
例子:
import "Class.h"
import <Class.h>
import <director/Class.h>
这个和C++里的include ,java的import类似
四 、Property 和Synthesize
Property定义:@property 声明用于自动创建property属性变量的getter和setter
Synthesize定义:@Synthesize声明实现了property属性变量的getter和setter。
例子:
在 interface:@property dataType variableName
在 implementation: synthesiz variableName
四、头文件中的方法
例子:
- -(returnType)method
- -(returnType)method:(dataType)param1
- -(returnType)method:(dataType)param1 withParam:(dataType)param2
类似于:
C/C++/Java
- returnType method()
- returnType method(param1)
- returnType method(param1,param2)
五、self
指向自己的指针
[self method]
类似于:c++/java
this.method();
六、继承关系和接口实现
例子:
- ClassA:ParentA
- ClassA:ParentA<Protocol>
- ClassA <Protocol>
类似于:
java:
- ClassA extends ParentA
- ClassA extends ParentA implements interface
- ClassA implements interface
objective-c的 Protocol和c++、java的接口类似。
七、空指针
id obj = nil;
NSString *hello = nil;
nil相当与Java中的null;
八、 id
objective-c的和C++里的(void*)类似
PS:Objective-C和Java一样,都有运行时环境,有内省的能力。Objective-C和java有很多不同的地方,在iOS系统里,Objective-C的内存需要自己管理,添加了ARC机制后编译器帮助了Objective-C 添加release释放的代码。而Java是通过垃圾回收器管理内存的。
转载于:https://www.cnblogs.com/kenshinobiy/p/4959639.html
快速让你明白Objective-C的语法(和Java、C++对比)相关推荐
- Java基础知识第二讲:Java开发手册/JVM/集合框架/异常体系/Java反射/语法知识/Java IO
Java基础知识第二讲(Java编程规范/JVM/集合框架/异常体系/Java反射/语法知识/Java IO/码出高效) 分享在java学习及工作中,常使用的一些基础知识,本文从JVM出发,讲解了JV ...
- 打怪升级之小白的大数据之旅(一)<Java基础语法之Java的身世之谜>
打怪升级之小白的大数据之旅(一) Java基础语法之Java的身世之谜 打怪升级之小白的大数据之旅(一) 前言 一.学习大数据之前 二.Java基础 what? why? how? 总结 前言 做了几 ...
- lambda表达式语法_使用类似Lambda的语法作为Java中的表达式进行切换
lambda表达式语法 从Java 14开始, switch表达式具有其他Lambda式 ( case ... -> labels )语法,它不仅可以用作语句,还可以用作计算为单个值的表达式. ...
- java 静态对象语法_04.Java 语法
计算机基础知识 表达式(expression):Java中最基本的一个运算.比如一个加法运算表达式.1+2是一个表达式,a+b也是. 计算机内存的最小存储单元是字节(byte),一个字节就是一个8位二 ...
- Java学习之路-----Java基础简介,基础语法,Java标识符,修饰符,关键字与注释
这里写目录标题 Java简介 Java发展历程 Java语言平台版本 Java语言的特点 Java语言跨平台原理--JVM JRE和JDK JDK安装路径下的目录解释 Java基础语法 Java标识符 ...
- 孤傲苍狼 只为成功找方法,不为失败找借口! javaweb学习总结(十五)——JSP基础语法 任何语言都有自己的语法,JAVA中有,JSP虽然是在JAVA上的一种应用,但是依然有其自己扩充的语
javaweb学习总结(十五)--JSP基础语法 任何语言都有自己的语法,JAVA中有,JSP虽然是在JAVA上的一种应用,但是依然有其自己扩充的语法,而且在JSP中,所有的JAVA语句都可以使用. ...
- C#的进化——C#发展史、C#1.0-10.0语法系统性梳理、C#与JAVA的对比
C#的进化 C#发展史.C#1.0-10.0语法系统性梳理.C#与JAVA的对比 前言 C#也使用了十年有余了. 一路走来,见证了微软从封闭走向开放,从平台捆绑,到成为活跃于Github的重要贡献者. ...
- lsdyna如何设置set中的node_list_如何快速掌握es6+新特性及核心语法?
国庆刚刚结束,我们开始一波新的学习进程吧. ECMAScript 6.0(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了.作为前端必备技能,我们来快速开始吧 接 ...
- 一文快速掌握 es6+新特性及核心语法
首先先祝各位节日快乐,好好去体验生活的快乐,在假期最后一天里,祝大家收获满满,同时抓住假期的尾巴,收割实用技能. 接下来我会总结一些工作中常用也比较核心的es6+的语法知识,后面又要慢慢开始工作之旅了 ...
最新文章
- JavaScript的前世今生
- Which of the following statement(s) equal(s) value 1 in C programming language?
- php新增数组函数,php操作数组函数
- 一款IDEA插件神器,帮你一键转换DTO、VO、BO、PO、DO
- chromebook刷机_您可以购买的最好的Chromebook,2017年版
- 数字转字符函数_Excel之文本函数CONCATENATE/TEXT/LEFT/MID/RIGHT/FIND/LEN
- 《自顶向下网络设计(第3版)》——导读
- Spring基于IOC容器基本原理
- 天地图专题二:在天地图上循环显示标注点以及悬停显示信息窗口
- select简易的二级联动
- 读书笔记_量化交易如何建立自己的算法交易02
- pat04-树4. Root of AVL Tree (25)
- Laravel 生态圈
- 计算机配机方案和理由,配机方案
- 协方差、相关系数(Pearson 相关系数)
- 苹果蓝牙耳机平替哪个好用?商务通话蓝牙耳机推荐
- 购买一台计算机需要哪些配件,组装一台电脑需要哪些配件【详细列举】
- 关于Anaconda(Miniconda)虚拟环境中的包的问题pkgs
- python绘制直方图
- 4个易打动人的营销技巧
热门文章
- 靠WiFi信号就能检测呼吸跌倒!北大这项硬科技研究越来越藏不住了
- 语言模型“不务正业”做起目标检测,性能还比DETR、Faster R-CNN更好 | Hinton团队研究...
- AI进军摇滚圈,老炮:这是啥?
- 网易北航搞了个奇怪研究:多数人类看不懂的立体图,AI现在看懂了
- 清华「计图」迎来重大更新:支持热门的可微渲染,多项CV任务速度超越PyTorch...
- 腾讯实时音视频开发应用大赛火热开赛,两大主题、60万奖品,等你来拿!
- 1分钟10万字大法:量子波动速读、蒙眼翻书穿针,这是席卷15省的最新智商税...
- GitHub免费支持CI/CD了,开发测试部署高度自动化,支持各种语言,网友:第三方凉凉...
- Python 如何计算当前时间减少或增加一个月
- free -m 内存