OC点语法

来源:互联网 发布:ws10b知乎 编辑:程序博客网 时间:2024/04/20 12:28

在我的第一篇文章 OC基本语法概述中已经说到:

[object message]  或者 object.message来发送消息
object表示一个对象或是一个类,message消息也可以认为是一个函数。这句话值得深刻理解。

事实上也可以是如此理解,[instance property] 或者是instance.property此处的property是OC中我们自己对类定义的属性。

所以总结来说[A B]或者A.B中

1、A可以是一个类或者是对象,B可以是属性或者是方法

2、当A是类时,B只能是类方法;当A是对象时,B可以使对象的属性也可以是实例方法。

下面是A是对象,B是实例方法的一个源代码。我写了一个叫Cat的类,一共有三个文件,Cat.h和Cat.m以及main.m。

注意:在[Cat alloc]处,A为类,B为类方法。

Cat.h文件

@interface Cat : NSObject{    //Cat类中设置了一个int类型的字段或者叫成员变量,而且OC中类的字段默认是@protected的    int age;}//这是一个setter函数,用于设置或修改值- (void) setAge:(int)newAge;//这是一个getter函数,用于获取值,也可写成getAge,不过在Cat.m文件中使用时函数名应写作getAge:- (int) age;@end

Cat.m文件

#import <Foundation/Foundation.h>#import "Cat.h"@implementation Cat- (void) setAge:(int)newAge{    //将方法(函数)参数对字段进行赋值,即设置字段的值    age = newAge;}- (int) age{    //返回字段的值,注意此处的age与函数名age是不同的两个概念,此处age是字段的名字    return age;}@end

main.m文件

#import <Foundation/Foundation.h>#import "Cat.h"int main(int argc, const char * argv[]) {    @autoreleasepool {        // insert code here...        //经典调用        //初始化一个cat1对象为其分内存        Cat *cat1 = [[Cat alloc]init];        //对cat1对象使用方法设置字段age的值        [cat1 setAge:100];        //获取cat1对象中age字段的值        int catAge = [cat1 age];        NSLog(@"cat age is %d",catAge);        // cat age is 100                //点语法调用        Cat *cat2 = [[Cat alloc]init];        cat2.age = 200;        int catAge2 = cat2.age;        NSLog(@"cat2 age is %d",catAge2);        // cat age is 200    }    return 0;}



0 0
原创粉丝点击