十分钟让你明白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 语言:

[cpp] view plaincopy

  1. public void helloWorld(bool ishelloworld) {
  2. //干点啥
  3. }

C++语言:

[cpp] view plaincopy

  1. void helloWorld(bool ishelloworld) {
  2. //干点啥
  3. }

Objective-C语言:

[cpp] view plaincopy

  1. -(void) HelloWorld:(BOOL)ishelloworld{
  2. //干点啥
  3. }

前面带有减号(-) 的方法为实例方法,必须使用类的实例才可以调用的。对应的有+号, 代表是类的静态方法,不需要实例化即可调用。

二、消息。
消息的定义:向对象发送信息。
 消息是ios的运行时环境特有的机制。 和C++,Java下的类,或实例调用类或实例的方法类似。我这说的是类似,他们的机制实际上是有很大的差别。
例子:
[object  message]

[cpp] view plaincopy

  1. [object  message:param1 withParameter:param2]
  2. NSString *string;
  3. 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

四、头文件中的方法

例子:

[cpp] view plaincopy

  1. -(returnType)method
  2. -(returnType)method:(dataType)param1
  3. -(returnType)method:(dataType)param1 withParam:(dataType)param2

类似于:
C/C++/Java

[cpp] view plaincopy

  1. returnType method()
  2. returnType method(param1)
  3. returnType method(param1,param2)

五、self 
指向自己的指针
[self method]

类似于:c++/java
this.method();

六、继承关系和接口实现

例子:

[cpp] view plaincopy

  1. ClassA:ParentA
  2. ClassA:ParentA<Protocol>
  3. ClassA <Protocol>

类似于:
java:

[cpp] view plaincopy

  1. ClassA extends ParentA
  2. ClassA extends ParentA implements interface
  3. 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是通过垃圾回收器管理内存的。

时间: 2024-10-06 01:47:34

十分钟让你明白Objective-C的语法(和Java、C++的对比)的相关文章

十分钟学会Markdown(younghz原创)

younghz原创,转载请注明:http://blog.csdn.net/u012150179/article/details/26503779 原内容及代码托管在GitHub上,并持续更新,欢迎交流:https://github.com/younghz/Markdown 主要内容 MARKDOWN是什么? 谁发明可这么个牛X的东西? 为什么要使用它? 怎么使用? 都谁在用?没人用的东西我可不用. 感觉有意思?趁热打铁,推荐几个工具. 正文 1. MARKDOWN是什么? MARKDOWN是一种

十分钟学习Python的进阶语法

(0)目录 VMware 下安装Ubuntu的吐血经历 零基础学习Shell编程 Linux下的makefile的妙用 Linux调试神器 -- gdb 十分钟学会Python的基本类型 分布式版本管理神器--GIT GIT文件的三种状态 & Git SSH秘钥问题 十分钟学习Python的进阶语法 配置SSH无密码访问及Linux热键.重启.kill进程 Java的不定长参数和Python的不定长参数对比 一:起因 (1)作为胶水语言的Python,可谓无处不在,快速开发原型网站:大数据处理等

做事先等十分钟,看路要看十年后

作者:是赞链接:https://zhuanlan.zhihu.com/p/23028203来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 1.一个劳累一天的人,饿哭了,看到一个鸡腿,想马上吃掉.一个减肥的人,热爱肉食,看到一个鸡腿,也想马上吃掉.第一个是需要,第二个是想要.如何辨识这两者之间的区别呢? 等十分钟. 等十分钟,劳累饿哭的那个人还会需要.而要减肥的那个人,会冷静下来.会明白自己的冲动只是想要.当然了,如果十分钟都冷静不下来,那也没必要减肥了. 2. 我

花十分钟,让你变成AI产品经理

花十分钟,让你变成AI产品经理 https://www.jianshu.com/p/eba6a1ca98a4 先说一下你阅读本文可以得到什么.你能得到AI的理论知识框架:你能学习到如何成为一个AI产品经理并且了解到AI产品经理如何在工作中发挥作用,以及AI产品经理需要从哪些方面锻炼能力.最重要的是,通过本文,一切都特别快(手打滑稽). PS:目前只针对弱人工智能(我喜欢简称,此处我们简称为"弱智")进行学习. 首先我们必须要掌握的是AI的专业知识框架,然后了解AI的市场情况,最后要明白

Orange&#39;s 自己动手写操作系统 第一章 十分钟完成的操作系统 U盘启动 全记录

材料: 1 nasm:编译汇编源代码,网上很多地方有下 2  WinHex:作为windows系统中的写U盘工具,需要是正版(full version)才有写的权限,推荐:http://down.liangchan.net/WinHex_16.7.rar 步骤: 1 编译得到引导程序的机器代码.用命令行编译汇编源代码:name boot.asm -o boot.bin,其中boot.bin文件产生在命令行的当前目录中. 2 将引导程序写入到U盘引导盘的第一个扇区的第一个字节处(后),即主引导区.

[转]教你十分钟下载并破解IntelliJ IDEA(2017)

来源:http://www.itwendao.com/article/detail/400687.html 之前都是用myeclipse,但是最近发现看的很多教学视频都是使用 IntelliJ IDEA,于是决定换个软件开始新的学习征程! 下面讲讲我是如何在十分钟之内安装并破解该软件. 1.首先,我找到了 IntelliJ IDEA的官网:www.jetbrains.com 然后找到下载的地方,选择自己电脑所匹配的下载安装包,这里我们选择收费版的下载,因为免费版的功能并没有收费版的强悍. 2.接

【NLP】十分钟学习自然语言处理

十分钟学习自然语言处理概述 作者:白宁超 2016年9月23日00:24:12 摘要:近来自然语言处理行业发展朝气蓬勃,市场应用广泛.笔者学习以来写了不少文章,文章深度层次不一,今天因为某种需要,将文章全部看了一遍做个整理,也可以称之为概述.关于这些问题,博客里面都有详细的文章去介绍,本文只是对其各个部分高度概括梳理.(本文原创,转载注明出处:十分钟学习自然语言处理概述  ) 1 什么是文本挖掘? 文本挖掘是信息挖掘的一个研究分支,用于基于文本信息的知识发现.文本挖掘的准备工作由文本收集.文本分

教你十分钟掌握Linux文件系统管理

在第一天装系统的时候,我们已经知道了mount,即挂载的概念.装机时自己配置分区的小伙伴都知道,CentOS7的文件系统为xfs,CentOS6则是ext4,更早的CentOS5则是ext3.老师告诉我们这叫文件系统.不同的文件系统有不同的存储特色.如linux里ext2无日志,xfs可支持最高200T之类的,window里fat32无法支持大于4G文件的传输云云-- 稍等,好像有点跑题了. 总之,今天我们来说说基于CentOS平台的Linux文件管理. 先看下面这个题目. 创建一个2G的文件系

每天十分钟学习计算机专业英语(一)

每天十分钟学习计算机专业英语(一) 对于一个程序员来说,良好的英语阅读能力是很重要的.因为我们往往需要阅读英文的文档,比如MDN.除此之外,使用github和stackoverflow这些网站也是需要良好的英语能力作为支撑的.这一系列的博文会记录计算机专业英语的相关知识,以提升我们的英文阅读和翻译水平. 第一部分:基本单词 hardware n 硬件 keyboard n 键盘 typewriter n 打字机 button n 按钮 type v 打字 n 类型 traditional adj