OC之语法

OC中的语法糖(你真的理解了点语法么?) 语法糖是一种大多程序员开发的时候使用的东西,今天我们一起来研究下OC中的语法糖。 阅读详情

一、点语法

(一)认识点语法

声明一个Person类:

复制代码
 1 #import <Foundation/Foundation.h>
 2 
 3 @interface Person : NSObject
 4 {
 5     int _age;//默认为@protected
 6 }
 7 
 8 - (void)setAge:(int)age;
 9 - (int)age;
10 
11 @end
复制代码

    Person类的实现:

 

复制代码
 1 #import "Person.h"
 2 
 3 @implementation Person
 4 
 5 - (void)setAge:(int)age
 6 {
 7     _age = age;// 不能写成self.age = newAge,相当与 [self setAge:newAge];
 8 }
 9 
10 - (int)age  //get方法
11 {
12     return _age;
13 }
14 
15 @end
复制代码

 

点语法的使用:

复制代码
 1 #import <Foundation/Foundation.h>
 2 #import "Person.h"
 3 
 4 int main(int argc, const char * argv[])
 5 {
 6 
 7     @autoreleasepool {
 8         
 9         // insert code here...
10         Person *person = [[Person alloc] init];
11         
12         //[person setAge:10];
13         person.age = 10;//点语法,等效与[person setAge:10];
14 //这里并不是给person的属性赋值,而是调用person的setAge方法
15         
16         //int age = [person age];
17         int age = person.age;//等效与int age = [person age]
18        NSLog(@"age is %i", age);
19         [person release];
20         
21     }
22     return 0;
23 }
复制代码

 

(二)点语法的作用

OC设计点语法的目的,是为了让其他语言的开发者可以很快的上手OC语言开发,使用点语法,让它和其他面向对象的语言如java很像。

(三)点语法的本质

点语法的本质是方法的调用,而不是访问成员变量,当使用点语法时,编译器会自动展开成相应的方法。切记点语法的本质是转换成相应的set和get方法,如果没有set和get方法,则不能使用点语法。

如:

Stu.age=10;展开为:[stu setAge:10];

int  a=stu.age;展开为:[stu age];

编译器如何知道是set方法还是get方法?主要是看赋值(可以使用断点调试来查看)。

在OC中访问成员变量只有一种方式即使用-> 如stu->age,这种情况要求在@public的前提下。

(四)点语法的使用注意

下面的使用方式是一个死循环:

   (1)在set方法中,self.age=age;相当于是[self setAge:age];

(2)在get方法中,return self.age;相当于是[self age];

二、变量作用域

(一)变量的作用域主要分为四种:

(1)@public (公开的)在有对象的前提下,任何地方都可以直接访问。

(2)@protected (受保护的)只能在当前类和子类的对象方法中访问

(3)@private (私有的)只能在当前类的对象方法中才能直接访问

(4)@package (框架级别的)作用域介于私有和公开之间,只要处于同一个框架中就可以直接通过变量名访问

(二)使用注意和补充

(1)在类的实现即.m文件中也可以声明成员变量,但是因为在其他文件中通常都只是包含头文件而不会包含实现文件,所以在这里声明的成员变量是@private的。在.m中定义的成员变量不能喝它的头文件.h中的成员变量同名,在这期间使用@public等关键字也是徒劳的。

(2)在@interface  @end之间声明的成员变量如果不做特别的说明,那么其默认是protected的。

(3)一个类继承了另一个类,那么就拥有了父类的所有成员变量和方法,注意所有的成员变量它都拥有,只是有的它不能直接访问。

OC基本语法 一。Oc语法预览: 1.关键字:绝大部分以@开头,部分不是: self、super、id、_cmd、__block、__strong、__weak、 2.字符串以@开头:@"hello"是OC中的字符串 3.其他: ---基本数据类型:char,int,float,double,BOOL(YES/NO) ---nil相当于NULL 也就是0 ---输出函数:NSLog(@"Hello... 阅读详情

相关推荐

oc基础语法

m是OC源文件扩展名,入口点也是main函数,第一个OC程序: #import int main(int argc, const char * argv[]) { theme manager     @autoreleasepool {         NSLog(@"Hello, World!");     }     return 0; } 预处理指令import会自动检

lingduya的博客 877

OC点语法和变量作用域

  OC点语法和变量作用域 一、点语法 (一)认识点语法 声明一个Person类: 1 #import &lt;Foundation/Foundation.h&gt; 2 3 @interface Person : NSObject 4 { 5 int _age;//默认为@protected 6 } 7 8 - (void)setAge:(...

weixin_34228617的博客 162

OC—基础语法

一、Objective-C语言简介 Objective-C简称Obj-C或者OC,Objective的意思就是面向对象的。OC其实就是在C语言的基础之上,封装了一层面向对象的语法,他并不是一门全新的编程语言。OC是Mac OS X系统和iOS系统的主要开发编程语言,当然马上要被Swift给替代了,然并卵,我们还是得好好学习OC,因为现在大多数公司还是使用OC来做iOS开发。 二、第一个OC程序...

标题 1492

浅谈iOS方法体作用域中的堆和栈

在iOS函数体中,局部变量是放在栈中; 对象是放在堆中,该空间是自动分配的。 当程序检执行完某函数,程序就会跳出该函数的作用域,在栈中的局部变量会自动被回收;但是在堆中的对象需要程序员手动释放(现在ARC了,程序员不需要管理对象释放的问题了) eg.在如下示例程序中,整型变量a、b和指针变量p都是放在栈中;当程序执行完main函数时,a、b、指针变量p会被释放。但位于堆中

alsnmg的专栏 938

告别密码本!用Windows NPS给华为/华三交换机做Radius认证,SSH登录更安全

本文详细介绍了如何利用Windows NPS实现华为/华三交换机的Radius认证,提升SSH登录安全性。通过集中化管理、精细化控制和完整审计追踪,企业可告别传统密码本,大幅提升网络设备管理效率。文章包含NPS服务部署指南、交换机配置详解及调试技巧,助力企业构建安全高效的统一认证体系。

weixin_42549723的博客 418

uniapp: err = err.replace(this._UNI_INPUT_DIR_REG, ‘UNI_TypeError: err.replace is not a function问题修复

问题:uniapp的依赖包出现了问题,需要升级解决办法:升级uniapp依赖包,下载"semver"和”@dcloudio/uni-i18n“两个包,本地锁定postcss为7版本,就解决了。

py_boy的博客 1453

IOS基础---Objective-C学习之点语法和变量作用域

一、点语法 1. 认识点语法 声明一个Person类: #import @interface Person : NSObject { int _age;//默认为@protected } - (void)setAge:(int)age; - (int)age; @end   Person类的实现:  #import "Person

292

零代码搭建专业知识库:Wiki.js+cpolar让团队协作像写笔记一样简单

"项目文档又找不到了!“团队负责人小张第N次在群里看到这样的抱怨——技术文档分散在邮件、网盘和个人电脑里,新人入职要花一周熟悉文档位置,远程协作时版本混乱更是家常便饭。Wiki.js与cpolar内网穿透服务的出现,就像给团队协作装上了"中央大脑”,用写Markdown笔记的简单方式,搭建一个专业的知识库系统。普通人对知识管理的需求其实很简单:方便记录、容易查找、大家能用。但传统方案把这个过程搞得异常复杂:建服务器、配环境、学语法、搞权限……大部分团队还没开始就放弃了。

Yawesh的博客 2037

Objective-C中的作用域详解

我君哥说过“基础的知识再讨论也不为过”,想必很多人都深有体会。 在此就转一篇基础的文章,由于讲的比较详细,我就稍做整理,标注下重点,然后写点自己的理解(pending)。 原文地址:http://www.itivy.com/iphone/archive/2011/12/21/iphone-objective-c-scope.html 在Objective-C中,可

xml_eason的专栏 1293

传感器采集信息的频率(采样频率)

较高的采集频率通常能提供更详细的信息,但也会增加数据处理和存储的负担。在某些应用中,较高的采样频率可能是必要的,而在其他情况下,则可能会选择适当的低采样频率以降低功耗和数据处理压力。传感器采集信息的频率(采样频率)是指传感器在一定时间内对输入信号进行采样的次数。对于一些需要快速检测和响应的应用,如运动传感器、声音传感器等,高采样频率是至关重要的。高采样频率通常需要更多的功耗和更大的存储容量,因为产生的数据量更大。例如,对于快速运动的对象,较低的采样频率可能无法捕捉到运动的真实轨迹。

chen的博客 5341

【智能车Code review】——拐点的寻找

CROSSROAD:十字拐点 ROUNDISLAND:环岛拐点 rightfindflag[i]:表示第i行的右线是否被找到,1为找到,0为没有找到 flag_find_huan_rightdown_point :找到环岛右下拐点标志 flag_find_huan_rightmiddle_point:找到环岛右中拐点标志 找拐点的思路:观察一段数据中数据点的走向趋势,并且保证这段数据是准确的。在摄像头畸变比较严重的情况下这种方法不再适用 关于函数的调用请见:https://blog.youkuaiyun.com/qq.

hanhan的博客 1万+

IOS开发基础Object-C(05)—OC变量的作用域、self

一、变量的作用域方法的声明和实现,都必须以+ 或者 - 开头, (1). +表示类方法(静态方法) (2).-表示对象方法(动态方法) 在.h中声明的所有方法都是public类型(通过Category可以实现private)1.@public,@protected,@private@public 全局都可以访问 @protected 只能在类内部和子类中访

崔小花的专栏 3151

【原理图PCB专题】原理图图纸锁定/解锁与PCB文件加密方式

在工作中我们会遇到需要冻结原理图进行评审和加密图纸防止被他人盗用的需求。那么在OrCAD Capture中如何对图纸进行锁定与解锁,如何在Allegro中对PCB工程进行加密呢?

一点硬件 3255

OC语法总结

1> 凡是从NSObject中继承的类都需要自己管理内存,在OC语法中,创建的任何一个对象都拥有一个引用计数器,第一次创建的时候这个引用计数器为1,当引用计数器的值为0时,该对象会被销毁。在xcode4.5以后版本的编译器环境中,会自动在.m文件中生成该属性getter和setter方法的标准实现,不需显示声明用@synthesize来生成属性的getter和setter方法实现。* 3. 如果即没有实现get方法,也没有实现set方法,则@synthesize会自动生成属性的get和set方法实现。

2501_90210016的博客 1002

射频微波电路设计【1.4】

AppCAD是一组射频设计工具和计算机应用说明,它使射频工程师能以更快和更容易的方式设计他们的产品。该软件的理 念是为工程师提供一个“个人设计助理”,即功能强大、快速和容易使用的辅助设计工具。该软件包括如下基本功能: ·各种传输线电气参数的分析与计算;·各种匹配电路的分析与计算;·各种有源和无源简单电路的分析与计算;·射频系统指标的计算:增益、噪声系数、三阶交调、信噪比、灵敏度等;·器件可靠性分析。

qq_43416206的博客 2317

Qt —— 在Win11下“Qt for Android“开发环境,通过USB在真机(华为Meta60 PRO)上调试运行,并打包APK并在真实手机运行

Qt —— 在Win11下“Qt for Android“开发环境,打包APK并在真实手机运行

310

【iOS】OC语法知识小结

在之前写项目和代码的时候,遇到许多布局的实现问题,学习后并没有写成笔记,而是放在备忘录里,这篇博客是对暑假到大二上学期以来有些遗漏的OC语法问题的归纳。

2301_80467753的博客 1613

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

UIDebuggingInformationOverlay在OC语法中使用

转载请注明出处:http://www.cnblogs.com/pretty-guy/p/6924882.html 你可以从这里下载demo 在微博看到几位大牛再说将UIDebuggingInformationOverlay加入豪华午餐,于是乎,自己去看看了原文介绍。因为博主使用的是Swift语法,而我还没怎么使用Swift(千万别笑我跟不上时代

weixin_33994444的博客 188

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

OC简介与基础语法

一、OC简介     OC全称 Objective-C,它通过一套全新的语法,在C语言基础上添加了面向对象的特性。OC语法只频繁的使用方括号,而且不吝于写出极长的方法名,虽然代码冗长,但十分易读。OC完全兼容C语言,且可以在OC代码中混入C语言代码,甚至是C++代码。我们可以使用OC

爱家人,爱老婆,爱生活,爱coding,爱运动的有爱青年 1641

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

OC简单语法复习

第一个oc类 OC中。新建一个类会生成2个文件,OC中一个类需要2个文件来描述。 一个.h(声明),用于声明变量.方法 声明的关键字:@interface @end   一个.m(实现)用于实现.h中的方法  实现的关键字 @implementation @ end   如:Student 类

dwt1220 1080

Java、OC点语法的区别

Java等其他语言的点语法是调用成员变量 OC中的点语法是调用方法

AppleEngineer 542

OC 基础:基本语法

OC 基础:基本语法

a690197843的博客 1166

黑马程序员-IOS-OC基础-OC简介及基本语法

-------------------------------------- android培训、java培训、ios培训期待与您交流! ---------------------------------  OC简介:OC是Objective-C的简称,OC是在C语言的基础上,增加了一层最小的面向对象语法;完全兼容C语言;可以在OC代码中混入C语言代码,甚至C++代码;可以使用OC开

qq_25027273的专栏 467

OC语言基本语法

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、OC语言简介    1. OC语言是在C语言的基础上加了一层最小的面向对象的语法    2. OC 语言完全兼容C语言    3. 可在OC代码中混入C语言代码,甚至是C++代码    4. 可使用OC开发MAC OS X平台和IOS平台的应

jsh_513的博客 465
上一篇: OC之多态
下一篇: OC之属性
Shicuf
博客等级 码龄16年 11粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值