objective-c 中 . 运算符详解

//

//  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;程序报错 无法使用 .
语法 因为类中没有实现setter和getter方法

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;

}

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

时间: 2024-10-19 14:10:33

objective-c 中 . 运算符详解的相关文章

java中运算符详解

前言 运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算.JAVA中常见的运算符有很多种,大致分为以下几种,常见的几种运算符如下图: 算术运算符 加.减.乘.除.求余.例++.--.%./.  赋值运算符 为变量或常量起到赋值作用的.例如=.+=.*= 关系运算符 判断数据大小的,结果为一个布尔值.例如>.>=.!=.== 逻辑运算符 进行逻辑运算,运算的成员为布尔值,结果也为布尔值.例如&&.||.!. 条件运算符 也称三目运算符,表达式为(a<b)?a:b

Java的位运算符详解实例

Java的位运算符详解实例——与(&).非(~).或(|).异或(^).右移(>>).左移(<<).无符号右移(>>>) 位运算符主要针对二进制, 它包括了:“与”.“非”.“或”.“异或”."右移"."左移"."无符号右移". 从表面上看似乎有点像逻辑运算符, 但逻辑运算符是针对两个关系运算符来进行逻辑运算, 而位运算符主要针对两个二进制数的位进行逻辑运算. 下面详细介绍每个位运算符. 1.与运

Swift基本运算符详解

运算符是检查,改变,合并值的特殊符号或短语.例如,加号+将两个数相加(如let i = 1 + 2).复杂些的运行算例如逻辑与运算符&&(如if enteredDoorCode && passedRetinaScan),又或让 i 值加1的便捷运算符自增运算符++i等. Swift 支持大部分标准 C 语言的运算符,且改进许多特性来减少常规编码错误.如,赋值符(=)不返回值,以防止把想要判断相等运算符(==)的地方写成赋值符导致的错误.数值运算符(+,-,*,/,%等)会检

PHP 运算符 详解

PHP 算数运算符 运算符 名称 例子 结果 + 加法 $x + $y $x 与 $y 求和 - 减法 $x - $y $x 与 $y 的差数 * 乘法 $x * $y $x 与 $y 的乘积 / 除法 $x / $y $x 与 $y 的商数 % 模数 $x % $y $x 除 $y 的余数 下例展示了使用不同算数运算符的不同结果: <?php $x=10; $y=6; echo ($x + $y); // 输出 16 echo ($x - $y); // 输出 4 echo ($x * $y)

[转]Java的位运算符详解实例——与(&amp;)、非(~)、或(|)、异或(^)

位运算符主要针对二进制,它包括了:“与”.“非”.“或”.“异或”.从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两个关系运算符来进行逻辑运算,而位运算符主要针对两个二进制数的位进行逻辑运算.下面详细介绍每个位运算符. 1.与运算符与运算符用符号“&”表示,其使用规律如下:两个操作数中位都为1,结果才为1,否则结果为0,例如下面的程序段.public class data13{public static void main(String[] args){int a=129;int b=128

Objective - c Foundation 框架详解2

Objective - c  Foundation 框架详解2 Collection Agency Cocoa provides a number of collection classes such as NSArray and NSDictionary whose instances exist just to hold onto other objects. cocoa 提供了一系列的集合类,例如,NSarray,NSdictionary.它们存在的目的就是为了保持其他对象. 1.1.1N

java移位运算符详解[转]

java移位运算符不外乎就这三种:<<(左移).>>(带符号右移)和>>>(无符号右移). 1. 左移运算符 左移运算符<<使指定值的所有位都左移规定的次数. 1)它的通用格式如下所示: value << num num 指定要移位值value 移动的位数. 左移的规则只记住一点:丢弃最高位,0补最低位 如果移动的位数超过了该类型的最大位数,那么编译器会对移动的位数取模.如对int型移动33位,实际上只移动了332=1位. 2)运算规则 按

java移位运算符详解

java移位运算符不外乎就这三种:<<(左移).>>(带符号右移)和>>>(无符号右移).1.左移运算符左移运算符<<使指定值的所有位都左移规定的次数.1)它的通用格式如下所示:value << numnum 指定要移位值value 移动的位数.左移的规则只记住一点:丢弃最高位,0补最低位如果移动的位数超过了该类型的最大位数,那么编译器会对移动的位数取模.如对int型移动33位,实际上只移动了332=1位. 2)运算规则按二进制形式把所有的

zerglurker的C语言教程009——运算符详解(一)

在之前几节我们讲过数据类型.讲过函数.讲过代码执行顺序以及一些添加简单函数的方法. 这一节我们将着重讲讲运算符.包括运算符的含义以及优先级的概念 在C语言中,以下运算符是被公认的: C/C++语言运算符详解 优先级 运算符 名称以及含义 运算目 使用示例 结合方向 可否重载 附加说明 无 () 圆括弧 单目 (表达式) 无 否 括弧内的表达永远先计算 无 dynamic_cast<>() 类型动态转化 单目 dynamic_cast<目标类型>(源) 无 否 C++专有,不能转换返