点语法

点语法本质是函数的调用,不是像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中的点语法,成员变量的作用域的更多相关文章

  1. Objective-C 点语法 成员变量的作用域 @property和@synthesize关键字 id类型

    点语法 1.利用点语法替换set方法和get方法 方法调用 Student *stu = [Student new]; [stu setAge : 18]; int age = [stu age]; ...

  2. 「OC」点语法和成员变量的作用域

    一.点语法 (一)认识点语法 声明一个Person类: 1 #import <Foundation/Foundation.h> 2 3 @interface Person : NSObje ...

  3. 【iOS系列】-oc中特有的语法

    [iOS系列]-oc中特有的语法 oc数据类型: 1,基本类型 2,对象类型 3,id 4,BOOL 5,block 6,SEL 1:category 使用继承关系来扩充一个类,有一个弊病,高耦合性 ...

  4. OC开发系列-成员变量的作用域

    成员变量的作用域 OC中成员变量有四种作用域,同时每一种作用域对应着响应的关键字. * @private:自能在当前类的实现@implementation中访问 * @protected: 可以在当前 ...

  5. Java反射机制可以动态修改实例中final修饰的成员变量吗?

    问题:Java反射机制可以动态修改实例中final修饰的成员变量吗? 回答是分两种情况的. 1. 当final修饰的成员变量在定义的时候就初始化了值,那么java反射机制就已经不能动态修改它的值了. ...

  6. (转载)php的类中可以不定义成员变量,直接在构造方法中使用并赋值吗?

    (转载)http://s.yanghao.org/program/viewdetail.php?i=184313 php的类中可以不定义成员变量,直接在构造方法中使用并赋值吗? class block ...

  7. struts2 - View页面中获取Action的成员变量

    struts2 - View页面中获取Action的成员变量 2016年03月02日 11:04:44 IT男青年 阅读数:1074   View页面中获取Action的成员变量 按照Struts的设 ...

  8. Object-c中的属性和成员变量的关系详解

    很多人在初学移动开发的时候会对object-c中的合成存取方法感到疑惑,此处尝试为看到本文有缘人答疑解惑,鄙人才疏学浅,难免有疏漏谬误之处,热烈欢迎诸位看官拍砖指点. 1.合成存取方法: OC为增加开 ...

  9. OC中的面向对象语法3

    一. set方法和get方法 1. set方法和get方法的使用场合 @public的成员可以被随意赋值,应该使用set方法和get方法来管理成员的访问(类似机场的安检.水龙头过滤,过滤掉不合理的东西 ...

随机推荐

  1. html中的一些标签学习

    今天看手册学习到了HTML5很多属性.现在总结如下 <body bgcolor="BED1A2" text="FFFFFF" link="yel ...

  2. PHP插件技术-插件钩子(hooks)分析

    最近准备做一个开源的个人博客系统,因为在构想中要添加插件功能,所以就研究了一下插件功能的实现方法. 插件的功能按照本人自己的理解就是对已有的程序进行功能方面的添加以及改进,插件要与程序所提供的接口进行 ...

  3. html form一点基础知识,实现文件上传

    form用于提交文件需要修改其entype属性. enctype属性:规定在发送表单数据之前如何对其进行编码. 默认情况,enctype的编码格式是application/x-www-form-url ...

  4. 每天一道LeetCode--409 .Longest Palindrome

    Given a string which consists of lowercase or uppercase letters, find the length of the longest pali ...

  5. Part 2 Creating, altering and dropping a database

    A SQL Server database can be created, altered and dropped1. Graphically using SQL Server Management ...

  6. Part 67 to 70 Talking about method parameters in C#

    Part 67 Optional parameters in c# Part 68  Making method parameters optional using method overloadin ...

  7. 【转】K3Cloud 二次开发 单据转换系列

    Entity, EntryEntity, SubEntryEntity 这三个对象具有继承关系:Entity 是实体基类,用于定义各种实体的公共属性:EntryEntity 是单据体实体类,从Enti ...

  8. 兼容IE,chrome 等所有浏览器 回到顶部代码

    今天在博客园看到一片帖子回到顶部代码,索性就看了下,但是发现在非IE浏览器下可以运行,在IE浏览器下却运行不了. 故将其代码搬弄过来做了些许修改后,完美支持了IE下的运行. 主要实现功能代码文件: & ...

  9. node笔记——gulp-imagemin图片压缩

    出处:http://blog.csdn.net/kkgege/article/details/49929983 之前用项目用gulp进行前端的构建,用到压缩图片插件gulp-imagemin, 后来发 ...

  10. Android BroadcasetReceiver

    ci@clinux:~/mp_mtk$ adb -s QGAEFYAAOFN7PNOB logcat PhoneReceiver:e *:S --------- beginning of system ...