OC语法3——点语法,self关键字

点语法: 

   为了给程序员提供便捷,OC中也引入了点语法。不过它和Java中点语法的意义是完全不同的。

  在Java中无论调用任何方法,还是访问public类型的成员变量都是用点语法(.号)。

  而在OC中只规定点语法只可以替代set和get方法。

  例如。stu.age = 23;它的本质是[stu setAge : 23];  即,为stu的age属性赋值为23。

  int myAge = stu.age; 它的本质是[stu age]; 即,获取stu的age属性并赋值给MyAge。

注意:

  OC中的点语法只是为了给开发者提供便捷,而规定的代替写法。但是它调用函数的本质还是OC的方括号调用法。也就说编译器编译时会把点语法转换为方括号语法。

  stu.age 在Java中表示stu对象访问public的属性age,但是在OC中却不是,它表示stu对象调用getAge()或setAge()方法。

  

self关键字:

   OC中的self和Java中的this类似,似乎都代表当前方法的调用者。其实它们还是有区别的。

  Java中的this只能用在动态方法(对象方法)中表示当前对象,这个调用者只能是“对象”;

  而OC中的self既能用在动态方法中表示当前对象,也能用在静态方法(类方法)中表示当前类。万变不离其宗,可以理解为,self代表当前方法的调用者。

时间: 2024-08-25 07:36:28

OC语法3——点语法,self关键字的相关文章

OC中语法糖,最新语法总结

<span style="font-size:24px;"> 1.方法与顺序无关 2.枚举绑定数据类型 enum { ObjectiveC, Java, Ruby, Python, Erlang }; typedef NSUInteger Language; 3. 属性不用写@synthesize 4.语法简化 4.1 NSNumber NSNumber *value; value = @12345; value = @123.45f; value = @123.45; v

oc 属性、点语法、KVC

?.属性 概念 属性是Objective-C 2.0定义的语法,为实例变量提供了setter. getter?法的默认实现.能在?定程度上简化程序代码,并且增强实例变量的访问安全性 定义 @interface Person : NSObject @property 属性的类型 属性的名字 @end 等价 { NSInteger _number;  //实例变量 } - (void)setNumber:(NSInteger)number; - (NSInteger)number; ?.属性的Att

LINQ:开始使用 LINQ(五)- LINQ 中的查询语法和方法语法

开始使用 LINQ(五)- LINQ 中的查询语法和方法语法 在表示语言集成查询 (LINQ) 使用 LINQ 性查询语法,文档中的多数查询编写.但是,编译代码时,必须将查询语法转换为方法,这就需要 .NET 公共语言运行时 (CLR).这些方法调用标准查询运算符的名称类似 Where.Select.GroupBy.Join.Max和 Average.可以调用这些方法直接使用方法语法而不是查询语法. 查询语法和方法语法语义相同,但是,许多人员发现查询语法更简单.更易于阅读.某些查询必须表示为方法

shell编程之if语法、case语法、while语句、until语句、for语句、select语句

主要介绍shell基本语句的语法 if语句语法1 单分支结构 (如果,那么)if <条件测试> ;then 指令;fi 或者如下:if <条件测试>? then?  指令fi 2 双分支结构(如果,那么,否则...) if <条件表达式>? then ? 指令else ? 指令fi 多分支结构(如果,那么,否则如果,那么,否则...) if <条件表达式>? then ? 指令elif <条件表达式>? then?  指令else ? 指令fi其

OC语言学习 (三) 成员变量get/set方法和“.”语法,@proterty和@synthesize关键字

Person.h #ifndef oc_Person_h #define oc_Person_h @interface Person : NSObject { int age; @protected float height; } - (int) age; //get方法 - (void) setAge:(int)pAge; //set方法 @end #endif Person.m #import <Foundation/Foundation.h> #import "Person.h

JAVA语法基础之标识符和关键字

一.标识符 JAVA中的变量名.方法名.类名和对象名都是标识符,程序在编写程序的过程中要标识和引用都需要标识符來唯一确定.在Java中标识符的命名规则如下: 可由任意顺序的大小写字母.数字.下划线和美元符号组成. 不能以数字开头. 不能是Java中的保留关键字. 没有长度限制,但是大小写敏感,如Hello和hello是不同的标识符. 二.关键字 和其他语言一样,Java中也有许多保留关键字(即在Java中有特殊意义),如public.break等,这些保留关键字不能当作标识符使用.我们不需要死记

【Objective-C基础知识-12】OC语法特性 -- 块语法

一.基本概念 Block:块语法,本质上是匿名函数(没有名称的函数),苹果推荐的类型,效率高,用来封装和保存代码,BLOCK可以在任何时候执行. 标准C里面没有Block,C语言的后期扩展版本,加入了匿名函数,C++.JS.Swift等语言,有类似语法,叫做闭包. Block语法和函数指针很相似. Block和函数的相似性:(1)可以保存代码(2)有返回值(3)有形参(4)调用方式一样. Block就是一个匿名函数,它是OC对于闭包的实现,在块状中我们可以持有或引用局部变量,同时利用Block你

黑马程序员-OC中的点语法,成员变量的作用域

点语法 点语法本质是函数的调用,不是像java中那样,是用来访问成员变量的:oc中访问成员变量是用 -> 访问的: Person *p = [Person new]; p.age = 10; // 如果点语法是进行了赋值操作,那么就相当于调用了setter方法: [p.age]; // 这样不赋值相当于调用了getter: 注意点: 尽量不要在setter或getter中调用点语法,容易引发死循环:死循环是由于递归调用引发的: // 在setter调用点语法 - (void)setAge:(in

OC里面的点语法

之前我一直对OC的点语法的理解是错误的!请看下面代码: 注释原文: //这个点语法不是去给直接给name属性赋值,而是去ZHHPerson类中寻找setName:方法,然后再给name属性赋值.在Xcode中,只要有name属性,就可以直接调用person.name,是因为Xcode自动生成了setName:方法.为了验证我的说法:可以将定义的name属性注释,然后手动添加setName:方法与name方法,那么点语法还是能用.