objective-c 中 . 运算符详解

本文详细解析了Objective-C中的.语法使用方法,包括如何通过.操作符调用类中的成员方法,以及如何进行实例变量的赋值和读取操作。文章还探讨了不同属性权限下变量的访问方式,并提供了具体示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//

//  main.m

//  OC中的.语法

//

//  Created by 就不告诉你我是谁 on 15-8-9.

//  Copyright (c) 2015 xuqigang. All rights reserved.

//

#import <Foundation/Foundation.h>

#import "Test01.h"

//@interface Test01 : NSObject

//{

//    int a;

//@public int b;

//    int c;

//}

//@property int c;

//- (void) print;

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

{

    @autoreleasepool {     

        // insert code here...

        NSLog(@"Hello, World!");

  /*   OC . 语法的功能:

        1、通过 . 操作符 可以直接调用类中的成员方法

        2、通过 . 操作符 可以进行实例变量的赋值和读取操作,前提是该变量在类中已经实现了setter getter 方法。其中setter getter方法的定义和实现可以自定义实现,也可以通过@property 声明 @synthesize 实现的方式来完成。如果一个实例变量只有setter getter 方法 那么这个实例变量也只能进行赋值 或者 取值操作。值得注意的是,例如:成员变量 int name; setter方法必须按照这种方式声明:- void) name; getter方法必须这样声明:- (int) getName;

        3、对于一个用@public 修饰的成员变量,我们还可以在外面通过-> 操作符来进行取值和赋值操作,否则不能使用该方式。-> 不能用于访问成员函数。

        多说无益,举例说明:

        */

        int data=9;

        Test01 *p = [[Test01 alloc] initWith:2 :3 :5];//实例化一个对象p 并将其成员变量初始化为 2 3 5

/*      下面开始说OC 里面 . 语法的用处,请看下面示例:

        p.a;程序报错 无法使用 . 语法 因为类中没有实现settergetter方法

        p->a; 使用-> 直接访问成员变量  程序报错  原因  使用@interface 定义一个类时,里面的成员属性默认为protected 在外部无法访问

        data=p.b; 这里不能进行赋值操作  原因:没有实现 setter getter 方法

*/

        data=p->b;

        p->b=data;

/*     这里通过-> 变量b 可以进行取值和赋值操作 因为 b的属性权限为public

        data=p.b; 程序报错!这里不能进行取值操作  原因:虽然成员变量b 被声明为public 类型 但没有实现 setter getter 方法,所以不能使用.运算符*/

        data=p->c;

        p->c=data;

/*      这里通过-> 变量c 可以进行取值和赋值操作 因为 c的属性权限也为public*/

        data=p.c;

        p.c=data;

/*      里可以进行取值、赋值操作  原因:成员变量c 通过@property @synthesize 实现了 setter getter 方法,所以能使用.运算符*/

        p.print; //通过 . 语法也可以直接调用类中的成员方法

/*      p->print; -> 操作符 是用来访问成员变量的  不能用来调用成员方法*/

        data=p.func;//调用成员方法 并用data 接收方法返回值

        NSLog(@"%d\n",data);

    }

    return 0;

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值