OC点语法

在我的第一篇文章 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值