objective-c 中 . 运算符详解
来源:互联网 发布:php mysql答题系统 编辑:程序博客网 时间:2024/06/16 09:04
//
// 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 = [[Test01alloc] 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;
}
- objective-c 中 . 运算符详解
- Objective-C位运算符-Objective-C 位运算符
- Objective-C位运算符
- Objective-C位运算符
- Objective-C中instancetype详解
- c 中运算符详解及其优先级
- c/objective-c运算符优先级
- Objective-C表达式-Objective-C 赋值运算符
- Objective-c 中@property中属性详解
- Objective-C表达式-模运算符
- [Objective-C]简介、数据类型、NSLog、运算符
- objective-c 运算符优先级排序
- Objective-C中的位运算符用法
- objective-c 数学运算
- Objective-C分数运算
- 详解Objective-C中委托和协议
- Objective-C中委托和协议详解
- 详解Objective-C中静态变量使用方法
- 安装sass
- Why c-lang for deep learning, scala for cluster machine learning ?
- 第77讲:模式匹配下的提取器过程分析
- [leetcode] N-Queens II
- SubMenu子菜单
- objective-c 中 . 运算符详解
- 鲁棒的程序 之 MFC有理数数据输入控制
- 大数相加 华为oj 超长正整数相加
- scala实现设计模式之适配器模式
- [leetcode 230]Kth Smallest Element in a BST
- hdu4549(费马小定理 + 快速幂)
- python 全排列
- 点击登录Oracle企业管理器,提示错误,您的用户名和/或口令无效和如何修改oracle里面的sys和system的密码
- WIN7上安装sql2000出现的此系统不支持的问题解决方法