Objective-c基础(二)-类的定义

首先Objective-C是一种面向对象的语言,所以如果你了解java很多时候你也可以将Java上的一些思想应用到这上面来,很多地方是相通的。但在很多写法和习惯上却也有这很多不同之处。

类的定义方法,先上代码,根据代码来分析更容易些

@interface Person : NSObject

-(void) setAge:(int) a;
-(void) setName:(NSString *)n;
-(void) printPersonInfo;
@end

@implementation Person{
    int age;
    NSString *name;
}
-(void)setAge:(int)a{
    age = a;
}
-(void)setName:(NSString *)n{
    name = n;
}
-(void)printPersonInfo{
    NSLog(@"Name:%@ Age:%d",name,age);
}
@end
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{

    @autoreleasepool {
        
        Person *person = [[Person alloc]init];
        [person setName:@"ipolaris"];
        [person setAge:24];
        [person printPersonInfo];
    }
    return 0;
}

代码分为了三块@interface @implementation 和一个main函数。@interface @implementation的定义都是以@end结尾。在Objective-c中,定义类首先是要先定义interface的,在里面定义一些方法,不写具体实现,也声明一些实例变量。而冒号后面的NSObject,文档的解释是NS_ROOT_CLASS,类似与Java中的Object,Cocoa Touch中所有的类都是由NSObject类派生而来。方法前的“-”表示这是一个实例方法,还有另外之中就是“+”,表示是此方法是类方法,差不多java中的静态方法吧。方法的参数形如setName:(NSString *)n,并不像java或c语言中写在括号内。参数中行int这种c语言中的基本类型是不需要*,而NSSstring就不同了。

接下来就是@implementation ,其后跟着所写的接口名(这里是写在一个文件里,以后interface和implementation多数情况下是写在两个文件里,就需要引入头文件了)。在implementation里声明一些成员变量,以及方法方法所要提供的功能,如果在interface中定义的方法,没有在implementation中实现,会有个黄色的叹号提示,如果你未使用这个方法,不影响程序的编译,但是以后使用起来就要注意了(如果调用的话,写的时候不会提示你错误,而且还会提示你有这个方法,因为在interface中定义了,但是编译的时候就会报NSInvalidArgumentException的错误了),关于成员变量的声明,还有其他的方式,会以后讲解,现在主要是以结构和写法为主。然后就到了main函数,开始使用我们创建的类,首相我们先实例一个Person对象。[[Person alloc]init]其实进行的是两步操作,alloc并不陌生,在C语言中就是分配内存,此处也是,init则是进行初始化操作。这一步也可以拆开

Person *person = [Person alloc];

person = [person init];顺便说一下,此处的alloc和init不是我们定义的方法,他们都是在NSObject中定义的方法,其中alloc就是一个类方法,按住command,鼠标移到alloc点进去就能看到了



我们看到里面定义了一些其他的方法,我们以后会用到。我们还有另外一种方法来好获取一个Person的实例,[Person new],关于new这个方法,文档解释如下


像文档中描述的这一个方法其实等于了alloc和init,但是以后我们用到的大多数形式还是[[ alloc]init]这种方式多一些,因为我们经常会在初始化的时候做一些其他的时候。按我的理解这更像java中的构造函数,当不希望在初始化做一些事情时,我们可以直接是用一个空的无参构造函数,而且默认的是每个类都会有,但是当我们想在初始化做一些事情时,多数情况会用到有参的构造函数(当然也可以在无参构造函数中做,但灵活行不够)。下面就是使用实例的一些方法了。这个也是有别于java和C的地方,方法不是用.调用的,而是写在方括号里的,形如ClassOrInstance method ];,ClassOrInstance为类名或类的一个实例名称,然后就是空格,空格后紧跟的就是方法名,然后外边套上方括号,再用;来终止。另外Objective-C中请求某个类或实例来执行某个操作时,就是想它发送一条消息,消息的接收者成为接收者,因此上述的写法也可以描述为[ receiver message ]。现在我们编译运行一下,打印的结果如下


关于类的定义,这里这是简单的叙述,内容还有很多,用到的时候会继续讲解。看过一本书,讲到这个地方貌似有个关于分数的例子(输入两个数,然后以分数(a/b)的形式打印出来),很简单,各位可以试着写一下,我在CSDN(http://download.csdn.net/detail/ipolaris/5065547)上传了一个例子(只是实现功能,代码优不优美就另说了)。

现在掌握了Objective-C的基本语法了,下一节就可以介绍iOS的开发一些基本知识了,利用现掌握的知识可以写出一些“拙劣”的代码,一些像集合和一些稍高级的东西会在用到的时候单独讲,以快速进入iOS开发为主。

Objective-c基础(一)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值