IOS第三天——Objective-C语言的基本语法

那么接着昨天学习的继续学习Obj-C,今天我们就主要来学习下基本的语法。

1.  文件类型

Obj-C是C语言的超集,所以所有C语言里可以支持的语法也同样适用于Obj-C,那么Obj-C中头文件和实现文件的扩展名有以下几种:

.h-----头文件,包括磊、类型、方法以及结构体等

.m-----实现文件,可以保函Obj-C或者C语言代码

.mm----实现文件,C++和Obj-C混合编码

当我们需要在当前文件中引用其他头文件时,可以用#import关键字后面加文件路径进行引用,而且它比#include有一个好处就是可以确保文件不被重复引用。

2.  类的声明

类的定义在Obj-C中包括两个部分:接口部分和实现部分。接口部分包括类的声明、实例变量以及方法定义,那么我们一般就会放在.h文件里,至于实现部分保函类的实际实现代码,一般我们就把它放在.m文件里。那么接下来我们用一个实际的例子来说明一下:

@interface MyClass : NSObject
{
      int         count;
      id           data;
    NSString  *name
}
-(id)initWithStr:(NSString*)aName;
+(MyClass)createMyClassWithStr:(NSString*)aName
@end

上面的源码中,声明了一个名为MyClass的类,继承自NSObject类,那么昨天我们也学习过了,类的声明是由@interface开始,@end结束。我们还要记住的是:

@interface后面紧跟着的就是类名,冒号后面的则是继承的父类。

大括号中间的是成员变量的声明,大括号下面的就是方法声明。

方法返回值前面是“+”的代表是类的方法,是”-“的代表的是类实例的方法。

接下来我们再来看一个书上的代码示例:

@interface Car : NSObject            //类名为Car,继承自NSObject
{
    NSString   *  name;                //类的属性,车名
}
-(NSString *) name;                  //类的实例方法
-(void)setName:(NSString *)str;  //类的实例方法
-(float)mileFromKilometre: (float)km;  //类方法
@end
每一个Car的实例都可以调用实例方法,如下所示:

Car*mycar=[[Car alloc]init];  //实例化一个Car的对象
[myCar setName:  @"My Benz"];  //调用类的实例方法setName
[myCar release];     //释放实例

但是,类的实例化对象不能调用类方法,类方法的调用不需要实例化,具体使用方式如下:

[Car createMyClassWithStr:  105.6];  //调用类方法
上面的例子中,我们首先实例化了一个Car的实例,叫做myCar,myCar可以调用实例方法:setName,但是却不能调用类方法:mileFromKilometre,那么类方法是由类Car直接调用,而不是由实例来调用。

3.  方法和消息

方法的声明主要由方法标识、返回值类型,参数说明关键字、方法名、参数类型以及参数名组成,如下所示:

+(MyClass*)insertObject:(id)anObject atIndex:(NSUInteger)index
和C语言或者其他的语言一样,Obj的方法也可以含有多个参数,Obj-C中每一个参数都由一个参数说明关键字,下面是书上的一个计算三角形面积方法的声明实例:

-(int)calculateTriangleAreaWithLength: (int)length Height:  (int)height;
那么,方法前面的减号表示该方法是实例方法,方法的返回值类型是int整型,calculateTriangleAreaWithLength是方法的名字,同时也包含第一个参数的参数说明关键字。(int)length是第一个参数,类型是int整型。Height是第二个参数的参数说明关键字,最后的(int)height是第二个参数,类型也是int整型。
调用一个对象的方法,可以通过消息来实现。一个消息就代表一个方法信号。在Objective-C里面消息的分发是动态的,那么非常有利于类的多态性。在Obj-C中,消息是被封装在中括号[]里面的,中括号左边是消息接收对象(object),右边是消息(message)。具体实例如下:

[myArray insertObject:anObject atIndex:0];

那么这个就表示调用对象myArray的方法insertObject,insertObject有两个参数(param)——anObject和0。

4. 字符串

Obj-C作为C的超集,同样也支持对字符串的定义,单个字符是定义在单引号中,字符串则是定义在双引号中,这点其实跟C#的语法也很像,但是像php或者python的话,那就有些小的区别了,在Obj-C中很多框架对象都是用NSString传递字符串。

Obj-C提供了一个助记符可以很方便的从常量值创建NSString对象,要使用这个助记符所需要做的就是在普通的字符串前面加一个@符号,同样,我们看下具体的实例:

NSString*myStr=@"My String";    //定义字符串常量
NSString*myStr=[NSString stringWithFormat:@"%d %s %@",1,"C String",@"Obj-C String"       //字符串格式,等同C语言的字符串格式定义
C语言字符串和Obj-C的字符串很相似,用法也基本一致。Obj-C的字符串支持Unicode,可以支持任何语言的字符串,同样,Obj-C也支持同C语言一样的格式定义方式,所有的格式替换符都和C语言的兼容,同时还添加了新的格式替换符"%@"来支持Obj-C字符串。上面的例子中,%d和%s同C语言一样分别替换整型和字符串,%@用来替换Obj-C的字符串。

5.  日志打印

在C语言的开发过程中,开发人员会经常在代码里用printf对日志进行输入,以便debug,那么在Obj-C中,我们可以使用NSLog函数来打印日志,例如:

NSLog(@"log message");    //输出结果为:log message

OK,那么今天基本就先学习到这里,同时因为之前没有怎么学过C语言,那么很多时候对Obj-C这门语言的理解就不会像有过C开发的程序员们那么深刻,除了掌握基本的语法之外,还要进行消化吸收,加以理解。

2013年4月15日,Eric.Tang 记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值