OC中的点语法,成员变量的作用域
点语法
点语法本质是函数的调用,不是像java中那样,是用来访问成员变量的;oc中访问成员变量是用 -> 访问的;
Person *p = [Person new];
p.age = 10; // 如果点语法是进行了赋值操作,那么就相当于调用了setter方法;
[p.age]; // 这样不赋值相当于调用了getter;
注意点:
尽量不要在setter或getter中调用点语法,容易引发死循环;死循环是由于递归调用引发的;
// 在setter调用点语法 - (void)setAge:(int)age
{
_age = age;
self.age = ; // 这个setter会无限重复的递归,而没有递归结束的条件;
}
成员变量的作用域:或者叫权限修饰符
注意理解“直接访问”这四个字,是指通过对象名直接访问,不是通过setter和geter,这样就不叫直接访问了;
@public :任何地方都能直接访问对象的成员变量
@private:只能在本类的对象方法中直接访问,需要注意子类虽然不能直接访问,但是子类任然具有该属性,科通过父类的getter和setter访问
@protected:能在本类和子类的对象方法中直接访问
@package:在同一个框架中可以直接访问
没有添加任何修饰符,直接定义的成员变量,默认是protected,前提是这个成员变量是定义在@interface中的,注意在@implementation中也可以定义成员变量,而在这里定义的成员变量默认是@private,因为.m文件是不会被别人包含的;但是在implementation中声明的成员变量是不能和@interface中的成员变量重名的;
OC中的点语法,成员变量的作用域的更多相关文章
- Objective-C 点语法 成员变量的作用域 @property和@synthesize关键字 id类型
点语法 1.利用点语法替换set方法和get方法 方法调用 Student *stu = [Student new]; [stu setAge : 18]; int age = [stu age]; ...
- 「OC」点语法和成员变量的作用域
一.点语法 (一)认识点语法 声明一个Person类: 1 #import <Foundation/Foundation.h> 2 3 @interface Person : NSObje ...
- 【iOS系列】-oc中特有的语法
[iOS系列]-oc中特有的语法 oc数据类型: 1,基本类型 2,对象类型 3,id 4,BOOL 5,block 6,SEL 1:category 使用继承关系来扩充一个类,有一个弊病,高耦合性 ...
- OC开发系列-成员变量的作用域
成员变量的作用域 OC中成员变量有四种作用域,同时每一种作用域对应着响应的关键字. * @private:自能在当前类的实现@implementation中访问 * @protected: 可以在当前 ...
- Java反射机制可以动态修改实例中final修饰的成员变量吗?
问题:Java反射机制可以动态修改实例中final修饰的成员变量吗? 回答是分两种情况的. 1. 当final修饰的成员变量在定义的时候就初始化了值,那么java反射机制就已经不能动态修改它的值了. ...
- (转载)php的类中可以不定义成员变量,直接在构造方法中使用并赋值吗?
(转载)http://s.yanghao.org/program/viewdetail.php?i=184313 php的类中可以不定义成员变量,直接在构造方法中使用并赋值吗? class block ...
- struts2 - View页面中获取Action的成员变量
struts2 - View页面中获取Action的成员变量 2016年03月02日 11:04:44 IT男青年 阅读数:1074 View页面中获取Action的成员变量 按照Struts的设 ...
- Object-c中的属性和成员变量的关系详解
很多人在初学移动开发的时候会对object-c中的合成存取方法感到疑惑,此处尝试为看到本文有缘人答疑解惑,鄙人才疏学浅,难免有疏漏谬误之处,热烈欢迎诸位看官拍砖指点. 1.合成存取方法: OC为增加开 ...
- OC中的面向对象语法3
一. set方法和get方法 1. set方法和get方法的使用场合 @public的成员可以被随意赋值,应该使用set方法和get方法来管理成员的访问(类似机场的安检.水龙头过滤,过滤掉不合理的东西 ...
随机推荐
- Sharepoint 2013 安装部署系列篇 第二篇 -- SQL集群安装
第一部分 系统集群安装. 第三部分 安装和配置网络负载均衡在前端web服务器 第四部分 安装和配置sharepoint 场(三层拓扑部署) 以下图片均为sharepoint 2010..由于本人的笔记 ...
- External Table
CREATE TABLE AS SELECT,使用Oracle9i的External Table Oracle 9i 的一项新特性就是 External Table,它就象通常的数据库表一样,拥有字 ...
- Android ViewPager
昨天看到Weather&Clock Widget的页面滑动效果不错,了解了下可能是使用ViewPager来实现的,今天研究下,顺便记录下来. 根据Android官网的介绍,ViewPage ...
- 3DES 加解密,对长度不限制
#region 3DES /// <summary> /// 3DES加密 /// </summary> /// <param name="strString& ...
- JS函数式编程【译】2.1 函数式编程语言
- 洛谷 P3399 丝绸之路
题目背景 张骞于公元前138年曾历尽艰险出使过西域.加强了汉朝与西域各国的友好往来.从那以后,一队队骆驼商队在这漫长的商贸大道上行进,他们越过崇山峻岭,将中国的先进技术带向中亚.西亚和欧洲,将那里的香 ...
- 版本控制器 (Svn,Git)
Svn: 集中式版本控制器,首先开发者在开始新一天的工作之前必须从服务器获取代码,然后进入自己的分支开发,开发完成后把自己的分支合并到主分支上进行提交,解决冲突.所有的版本信息都放在服务器上.如果脱离 ...
- GITHUB基础使用教程
windows系统下: 1.安装完成后,还需要最后一步设置,在命令行输入: $ git config --global user.name "Your Name" $ git ...
- robots.txt用法
主要作用是告诉蜘蛛爬虫该网站下哪些内容能抓取,哪些内容不能抓取.虽然可以没有robots.txt这个文件,默认就抓取该网站的所有文件,对搜索引擎爬虫没有任何的影响,但是如果你想控制蜘蛛的检索间隔,你就 ...
- 使用wget备份禅道
禅道7.1,管理了公司所有项目.需要每月备份. 主机安装在一台windows上.为了方便,写个脚本自动调用禅道的备份功能,并把服务器上的备份文件下载到本地. @echo off setlocal re ...