oc 协议 回调 静态成员_Objective-c学习笔记(三)oc 多输入参数的方法及协议的使用及变量...

概述:OC多输入参数的方法、@protocol的使用、OC中变量、变量的存储类别

1.多输入参数的方法

同单参数和无参数的方法相比,只是需要注意要对新参数建议添加可以识别的标签。

举例:

//声明

-(void) setIntX: (int) n;  // 一个参数

-(void) setIntX: (int) n andSetIntY:(int) d;

//调用

//在调用多参数方法时,可以省略从第二个开始的方法名字

[test setIntX:1:2];   //省略了第二个标签,但建议书写时还是带上所有的标签,易于程序的可读

2.@protocol 的使用

协议的作用类似于c++中对抽象基类的多重继承。协议是多个类共享方法的列表,协议中列出的方法在本  类中没有相应的实现,而是由别的类来实现这些方法,如果一个类要遵守一个协议,该类就必须实现特  定协议的所有方法(可选方法除外)

2.1协议是一系列方法的列表,任何类都可以声明自身实现了某一个或一些协议。

在Objective-C 2.0之前,一个类必须实现(它声明自己要符合的)协议中的所有方法,否则编译器会  报告一个错误,表明这个类没有实现协议中所有方法;2.0之后允许标记协议中某些方法是可选的,  这样编译器就不会强制实现这些可选的方法。

2.2通过在@interface中的一对尖括号内列出协议的名称,告诉编译器你正在遵守的一个协议,eg:

@interface Test: NSObject

例子中,Test类的父类是NSObject,并且遵守了协议,则在实现Test类时,必须实现NSCopying协议中必须要实现的方法

2.3也可以遵守多项协议,只需要在尖括号中列出多个协议,格式如下:

@interface Test:NSObject

这样编译器就知道Test类遵守多项协议,Test类中必须实现所有协议中定义的方法

2.4也可以自己定义协议,格式如下:

@protocol Fly

-(void) go;

-(void) stop;

@optional   //optional 标记的方法是可选的方法

-(void) sleep;

@end

2.5 协议也可以采用类似继承的思想

@protocol Fly1   //因此任何遵守Fly1协议的类必须实现此协议列出的方法和由Fly协议定义的方法

3.OC中变量

3.1局部变量:同其他语言一样,在方法内部定义的变量,作用域只在对应的方法内

3.2全局变量:全局变量是定义在方法外部定义的变量。它不属于哪一个方法,而属于一个源程序文件,其作用域在整个源程序,全局变量的说明符为externe.g.

extern int intX;

3.3静态变量

以前在理解静态变量时又些偏颇,现在好好梳理下这块。

首先静态变量就是由static 修饰的变量,静态变量有以下优点,它可以节省内存,因为它是所有对象所共有的,因此,对多个对象来说,静态变量只存储在一处,供所有对象共用。引出静态变量是因为对于方法内部定义的变量即局部变量,在内存的栈上分配的空间,它的作用域只是在该方法内,当方法结束时,栈空间被释放,如果想要在下次调用该方法时获取上次调用的值怎么办呢?又不破坏类的封装性,这就引入了静态变量的概念。

4.变量的存储类别

前面提到两个,extern 和 static

还有auto、const、volatile,重点说一下auto和volatile

auto用于声明一个自动局部变量,是方法内部变量的声明方式,缺省设置。ps:就是局部变量嘛,没啥用貌似

volatile 的作用刚好同const相反,它明确地告诉编译器,该变量的值会发生改变,它用来修饰被不同线程访问和修改的变量。使用volatile修饰的变量是随时可以放生改变的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值