关键字:Objective-C(以下简称O-C)是C语言的一个超集,也就是C语言的语法O-C都是兼容的,所以为了避免冲突O-C的关键字都是以@符号开始的,比如:@class、@public 、@try等。

O-C和C语言对比:

比较项目    O-C和C语言对比
      基本类型      char、short、int、long、BOOL  这些基本类型他们都有。
      布尔      TRUE、FALSE、YES、NO
      基本语句      if else、 switch、for 、while  do、goto
      for扩展      for(xx in xx) 这个是O-C特有的
      id类型      id类型是O-C特有的,每个目标都可以表达为id类型,可以认为是NSObject *,或者void *
      nil      O-C中nil等同于null,表示一个目标的指针

类定义:在O-C中类、字段和函数的定义都感觉比较奇怪,其实也就是习惯问题,你接触C的定义、java的定义这种形式的定义多了再让你去接触其他形式的定义你就感觉很不适应,多看多练就行了。类的声明使用关键字@interface 和 @ end,也就是把类放到这两个关键字中间,类的实现放到@implementation 和 @end中间,当你创建一个类的时候会生成两个文件一个是.h,一个是.m,.h文件存放类和函数的声明,.m文件存放类和函数的具体实现。下面以表格的形式来进行说明:

定义 说明
声明对象     所有O-C类,接口声明必须要带 * 
创建对象     以中括号的形式来创建:Dog * dog = [Dog alloc];
初始化     以中括号形式来初始化:[dog init];
销毁对象     以中括号形式来销毁:[dog release];
变量(属性)定义     变量必须定义在{ } 之间
函数方法定义

函数定义格式:

  不带参数:- f,函数名是 f

  一个参数:- f:(int) x,函数定义前面必须加个- 号,f:是函数名,(int) x是参数;

  多个参数定义格式:- f:(int) x :(int) y :(float) z,这个函数名是f::: ;    这种形式也可以写成:-f:(int) x g:(int) y h:(float) z,这个函数名是f:g:h:

函数的调用

函数的调用以[]来调用(参数中间要有空格,dog 是已经创建的一个对象):     

  不带参数的调用:int a = [dog f]

  带一个参数的调用: int a = [dog f:100]

  带多个参数的调用:int a = [dog f:100 :200 :300];   多个参数另外一种调用:int a = [dog f:100 g:300 z:300]

函数重载    我理解的是O-C之中没有函数重载的,比如已经定义了一个函数:- (int) f:(int) x,就不能再定义:- (int) f:(float) x,  会报错的哦,如果不能这样定义我的理解就是这还是重载吗?

另外,OC中“ .号”在@synthesize的属性上等于getter和setter方法。

iphone开发学习之路--基本语法的更多相关文章

  1. Android开发学习之路--Android系统架构初探

    环境搭建好了,最简单的app也运行过了,那么app到底是怎么运行在手机上的,手机又到底怎么能运行这些应用,一堆的电子元器件最后可以运行这么美妙的界面,在此还是需要好好研究研究.这里从芯片及硬件模块-& ...

  2. Android开发学习之路-RecyclerView滑动删除和拖动排序

    Android开发学习之路-RecyclerView使用初探 Android开发学习之路-RecyclerView的Item自定义动画及DefaultItemAnimator源码分析 Android开 ...

  3. Android开发学习之路--基于vitamio的视频播放器(二)

      终于把该忙的事情都忙得差不多了,接下来又可以开始good good study,day day up了.在Android开发学习之路–基于vitamio的视频播放器(一)中,主要讲了播放器的界面的 ...

  4. Android开发学习之路--Android Studio cmake编译ffmpeg

      最新的android studio2.2引入了cmake可以很好地实现ndk的编写.这里使用最新的方式,对于以前的android下的ndk编译什么的可以参考之前的文章:Android开发学习之路– ...

  5. Android开发学习之路--网络编程之xml、json

    一般网络数据通过http来get,post,那么其中的数据不可能杂乱无章,比如我要post一段数据,肯定是要有一定的格式,协议的.常用的就是xml和json了.在此先要搭建个简单的服务器吧,首先呢下载 ...

  6. Android开发学习之路--Activity之初体验

    环境也搭建好了,android系统也基本了解了,那么接下来就可以开始学习android开发了,相信这么学下去肯定可以把android开发学习好的,再加上时而再温故下linux下的知识,看看androi ...

  7. Android开发学习之路--MAC下Android Studio开发环境搭建

    自从毕业开始到现在还没有系统地学习android应用的开发,之前一直都是做些底层的驱动,以及linux上的c开发.虽然写过几个简单的app,也对android4.0.3的源代码做过部分的分析,也算入门 ...

  8. 2021年正确的Android逆向开发学习之路

    2021年正确的Android逆向开发学习之路 说明 文章首发于HURUWO的博客小站,本平台做同步备份发布.如有浏览或访问异常或者相关疑问可前往原博客下评论浏览. 原文链接 2021年正确的Andr ...

  9. 我常用的iphone开发学习网站[原创]

    引用地址:http://www.cnblogs.com/fuleying/archive/2011/08/13/2137032.html Google 翻译 Box2d 托德的Box2D的教程! Bo ...

随机推荐

  1. python中selenium自动化常用关键字

    一:定位八种方法 例如: 二:常见的webdriver方法 1.浏览器相关:(打开浏览器先导入webdriver模块) (1)set_window_size(480,800)调整浏览器宽高大小 (2) ...

  2. day63-html-列表,表格,标签的嵌套规则

    1.列表 1.无序列表 <ul type="disc"> <li>a</li> <li>b</li> </ul&g ...

  3. Java之线程通信的方法

    /** * 线程通信的例子:使用两个线程打印 1-100.线程1, 线程2 交替打印 * * 涉及到的三个方法: * wait():一旦执行此方法,当前线程就进入阻塞状态,并释放同步监视器. * no ...

  4. docker安装(centos-7)

    centos7安装docker:Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker .通过 uname -r 命令 ...

  5. 吴裕雄--天生自然 PYTHON3开发学习:条件控制

    if condition_1: statement_block_1 elif condition_2: statement_block_2 else: statement_block_3 var1 = ...

  6. Maven打包时报Failed to execute goal org.apache.maven.plugins:maven-war-plugin:解决方案

    问题现象: 用Maven打包时,报Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war错误. 原因分析: 打 ...

  7. python常见内置函数总结

    简单的内置函数 len    求长度 min   求最小值 max  求最大值 sorted  排序 reversed   反向 sum   求和 进制转换 bin   转为二进制 oct   转为八 ...

  8. redis维护节点常用操作

    维护节点 添加主节点 hash槽重新分配 添加从节点 删除结点 1 添加主节点 集群创建成功后可以向集群中添加节点,下面是添加一个master主节点 添加7007结点作为新节点 执行命令:./redi ...

  9. netstat - 系统信息

    netstat - 系统信息 注意:如果是勘验或者验证漏洞,需要验证netstat程序的完整性(netstat程序是否被修改过). # 老版本的CentOS中会自带这个软件包,新版的7有的时候需要单独 ...

  10. VMware安装 RHEL安装完后,选择桥接模式如何与主机网络连通

    .查看主机的ip与网关,dns配置,如图 2.在linux系统中打开cd  /etc/sysconfig/network-scripts/  #进入网络配置文件目录 vi  ifcfg-eno1677 ...