objective学习之三

14. selector :见下图

15. @try{

}

@catch(NSException*exception){

}

 

@throw

 

16.初始化类,init***函数首先调用父类的init***方法(self = [super init***]),然后进行自己部分的初始化。一般不进行重载NSObject的alloc方法。

17. @protected,@private, @public, @package用于限定成员的使用范围,和C++类似。

 

18.文件模块的全局变量、静态变量和C++类似,用extern声明外部的全局变量,静态变量用static。实现多个模块之间共用或者限用某个变量。

 

19.和C++一样,变量前面可以增加存储类型符号:如auto,const,volatile,支持typedef

20.分类的概念:扩展类的功能,不能再分类中定义新的变量。

@interface Object1( Object2)

方法声明。。。

@end

 

@implement Object1(Object2)

具体实现。。。

@end

 

分类中谨慎使用覆盖原来类的方法,因为那样原方法不再能够使用;不必再分类中实现所有的方法,因为可以在分类中声明所有方法,在以后一段时间后实现它。使用分类方法后,会影响该类的所有子类。

21.协议:使用

@protocal protocalName

方法名  //必须实现

@optional

方法名   //可选

@end

某一个类实现了该协议:

@interface className: parentClassName<protocalName>

{

}

协议可以扩展:

@protocal extendedProtocal<protocalName>

@end

判断某个类是否遵循某个协议,利用if([currentObject conformsToProtocal@protocal(protocalName)] == yes) 或者利用编译器的警告功能:id<protocalName1, protocalName2> currentObject,这里定义了一个currentObject对象,该对象遵循协议protocalName1、protocalName2,如果在程序运行过程中,currentObject被附值一个对象,该对象没有实现该协议,就会有警告。

非正式协议:实际上是一个分类,也称为抽象协议,子类不一定要实现所有的方法。

22. 和C++一样,支持预处理指令

#define PI 3.1415927

#define str(x) #x

其中#表明要将功根据宏参数创建C风格的常量字符串,例如上面的例子,printf(str(xyz)); 等价于printf(“xyz”)

##表示两个标记连接在一起

#import 引入库

条件编译ifdef #endif #else #ifndef

#if #elif (不太一样)

defined(name)运算符判断是否已经定义

#undef name

23.基本的C语言特性:

数组:ClassName *arrayName[num];

函数,局部变量,静态变量,结构,指针等。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值