iphone开发学习之路--基本语法
关键字: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开发学习之路--基本语法的更多相关文章
- Android开发学习之路--Android系统架构初探
环境搭建好了,最简单的app也运行过了,那么app到底是怎么运行在手机上的,手机又到底怎么能运行这些应用,一堆的电子元器件最后可以运行这么美妙的界面,在此还是需要好好研究研究.这里从芯片及硬件模块-& ...
- Android开发学习之路-RecyclerView滑动删除和拖动排序
Android开发学习之路-RecyclerView使用初探 Android开发学习之路-RecyclerView的Item自定义动画及DefaultItemAnimator源码分析 Android开 ...
- Android开发学习之路--基于vitamio的视频播放器(二)
终于把该忙的事情都忙得差不多了,接下来又可以开始good good study,day day up了.在Android开发学习之路–基于vitamio的视频播放器(一)中,主要讲了播放器的界面的 ...
- Android开发学习之路--Android Studio cmake编译ffmpeg
最新的android studio2.2引入了cmake可以很好地实现ndk的编写.这里使用最新的方式,对于以前的android下的ndk编译什么的可以参考之前的文章:Android开发学习之路– ...
- Android开发学习之路--网络编程之xml、json
一般网络数据通过http来get,post,那么其中的数据不可能杂乱无章,比如我要post一段数据,肯定是要有一定的格式,协议的.常用的就是xml和json了.在此先要搭建个简单的服务器吧,首先呢下载 ...
- Android开发学习之路--Activity之初体验
环境也搭建好了,android系统也基本了解了,那么接下来就可以开始学习android开发了,相信这么学下去肯定可以把android开发学习好的,再加上时而再温故下linux下的知识,看看androi ...
- Android开发学习之路--MAC下Android Studio开发环境搭建
自从毕业开始到现在还没有系统地学习android应用的开发,之前一直都是做些底层的驱动,以及linux上的c开发.虽然写过几个简单的app,也对android4.0.3的源代码做过部分的分析,也算入门 ...
- 2021年正确的Android逆向开发学习之路
2021年正确的Android逆向开发学习之路 说明 文章首发于HURUWO的博客小站,本平台做同步备份发布.如有浏览或访问异常或者相关疑问可前往原博客下评论浏览. 原文链接 2021年正确的Andr ...
- 我常用的iphone开发学习网站[原创]
引用地址:http://www.cnblogs.com/fuleying/archive/2011/08/13/2137032.html Google 翻译 Box2d 托德的Box2D的教程! Bo ...
随机推荐
- RTMP、RTSP
一.参考网址 1.RTMP.RTSP.HTTP视频协议详解(附:直播流地址.播放软件) 2.海康RTSP流转RTMP并推送至WEB端展示 3.使用FFmpeg将rtsp流摄像头视频转码为rtmp播放 ...
- Morse code(多模式串匹配)
链接:https://ac.nowcoder.com/acm/contest/3665/E来源:牛客网 题目描述 Morse code is a character encoding scheme u ...
- spring获取当前动态代理对象
由于spring中的aop拦截的是代理对象 当拦截的目标方法被本类的另一个方法调用时,会出现拦截失效 最佳实践: 例如拦截RegulationService的update(regulation)方法, ...
- python os.path.dirname() abspath()
测试文件的名称 path_test.py 先确定文件目录 (my_flask3) python@ubuntu:~/Desktop/flask_news_pro$ python path_test.py ...
- curl命令简介
curl 文件传输工具 参数: -c --cokie-jar: 将cookie写入到文件 -b --cokie: 从文件中读取cookie -C --continue-at: 断点续传 -d --da ...
- P2P平台爆雷不断到底是谁的过错?
早在此前,范伟曾经在春晚上留下一句经典台词,"防不胜防啊".而将这句台词用在当下的P2P行业,似乎最合适不过了.就在这个炎热夏季,P2P行业却迎来最冷冽的寒冬. 引发爆雷潮的众多P ...
- 量化投资_关于Multicharts砖型图(传统砖型图和非传统砖型图)最详细的解释_调用篇
1. 砖图形成数组后,我们再对他们复制到数组中然后再调用出来看一下. 2. 如下是累计只取20个数组大小为例,如果开始阶段数组长度组成初始的Array[20]的长度,然后这个数组的最后一个值填满后,进 ...
- C# List引用类型的克隆
有时候我们想克隆一个List去做别的事,而不影响原来的List,我们直接在list后面加上小点点,发现并没有Clone这样的扩展函数.这时候就只有自己扩展了. 尝试了三种方式,测试都通过了,至于性能方 ...
- 利用docker安装gitlab
安装docker 安装 virtualbox 下载 dockertoolbox并安装 官网的服务器一直连不上, 幸亏还有这个 https://get.daocloud.io/toolbox/ 比 ht ...
- AOP统一处理修改人、创建人、修改时间、创建时间
1.配置拦截 首先开启 <aop:aspectj-autoproxy proxy-target-class="true"/>代理.解释一下下面..的意思是多个 < ...