码迷,mamicode.com
首页 > 其他好文 > 详细

objective-c 中 . 运算符详解

时间:2015-08-09 12:39:47      阅读:85      评论:0      收藏:0      [点我收藏+]

标签:

//

//  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;

}


版权声明:本文为博主原创文章,未经博主允许不得转载。

objective-c 中 . 运算符详解

标签:

原文地址:http://blog.csdn.net/u012129719/article/details/47374297

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!