1. @interface和@implementation

分别在.h和.m文件开头处

@interface和@implementation都可以说是接口
oc中的类必须包括两部分,interface部分和implementation部分,这才是oc中的一个类的完整声明;然后OC中将成员变量和成员方法的声明部分放置在interface部分中,包括继承关系,protocal实现关系,都在interface里面的头部进行声明,然后将实现部分放置在implementation部分中,相当于是将类拆分成声明和实现两部分,这两部分缺一不可,所以在OC中,不妨不要将interface和implementation叫做接口,直接叫做类声明部分和实现部分来得容易理解多了,简而言之,oc中interface是类的一个部分,和implementation共同组成一个完整的类。

2.@public.@protected.@private 和@package

这三个关键词都是成员变量的可见度:
1.@public: @public的级别是最低的,都可以用的对象->的方式找到成员变量,不安全
2.@protected:如果没有写可见度,默认是被保护的,被保护的成员变量可以在当前类及其子类被使用
3.@private 私有的:只能当前的类可以使用,使用范围更小
4.@package 这个是系统一些文件来使用,系统来用,如果以后看见了,直接跳过去就行了

3.@property 属性 和@sythesize 属性的实现

(1).@property 属性 :

在XCode4.5之后,属性一共可以做了三件事:
1.声明了设置器:setter和访问器:getter
2.实现了设置器和访问器
3.声明了一个成员变量,成员变量命名会在属性名前面加一个下划线

(2).@sythesize

在XCode4.5版本之前有这么一个关键词的定义
在.m文件中需要有一个关键词@sythesize才能实现setter和getter

4.@end 结束语句

1.@end 与 @ interface 一起使用 在.m和.h文件中
里面可以写:
(1).声明类的属性
(2).自定义初始化方法
(3).便利构造器等

2.@end 与@implementation 一起使用 在.m文件中
里面可以写:
(1).实现类的方法
(2).自定义初始化方法
(3).便利构造器等

5.1. #define 宏定义

例子:
#define HEIGHT self.view.frame.size.height

其中 HEIGHT 是定义的新的名字. self.view.frame.size.height是程序中要用的名字,在头文件的下面用#define定义就可以实现 HEIGHT 和self.view.frame.size.height 完全相等,也就可以在下面的程序中直接使用

注意:define后面的新名字需要大写

5.2. typedef常用来定义一个标识符及关键字的别名

例子:
typedef    int       INT;
typedef    int       ARRAY[10];
typedef   (int*)   pINT;

和宏定义类似,typedef 也可以定义新的名字,只不过后面的INT . ARRAY[10] 和 pINT 是新名字,前面的是原来的名字

#define和typedef 的区别

#define定义“可读”的常量以及一些宏语句的任务,而typedef则常用来定义关键字、冗长的类型的别名。
宏定义只是简单的字符串代换(原地扩展),而typedef则不是原地扩展,它的新名字具有一定的封装性,以致于新命名的标识符具有更易定义变量的功能。

例子:
typedef    (int*)      pINT;#define    pINT2    int*

实践中见差别:pINT a,b;的效果同int *a; int *b;表示定义了两个整型指针变量。而pINT2 a,b;的效果同int *a, b;
表示定义了一个整型指针变量a和整型变量b。

注意:

1.typedef与const 一起用的时候不是简单的字符串替换

例子:
typedef   char*   PSTR;
然后:
int   mystrcmp(const   PSTR,   const   PSTR); 
const   PSTR实际上相当于const   char*吗?不是的,它实际上相当于char*   const。
原因在于const给予了整个指针本身以常量性,也就是形成了常量指针char*   const。
简单来说,记住当const和typedef一起出现时,typedef不会是简单的字符串替换就行。

2.typedef在语法上是一个存储类的关键字(如auto、extern、mutable、static、register等一样),虽然它并不真正影响对象的存储特性,如:
typedef static int INT2; //不可行
编译将失败,会提示“指定了一个以上的存储类”。

所以说 , typedef只能替换一个存储类的关键字

6.@protocol 协议的关键词

位置:在头文件下:
声明一份协议:
原代码:

@protocol Marry <NSObject>
-(void)takeBaby;
-(void)cook;
@end

-(void)takeBaby;-(void)cook;是协议中的方法.

7.@required和@optional

这两个关键词是协议里的两个方法:
(1).@required 是必须实现的方法,默认是必须实现的方法
(2).@optional 时可选择执行的方法
例子:

@protocol Marry <NSObject>
@required
-(void)takeBaby;
@optional
-(void)cook;
@end

OC 中的关键词 大全(1)相关推荐

  1. iOS中NSLog输出格式大全

    iOS中NSLog输出格式大全 1 // 2 // ViewController.m3 // NSLog日志输出格式大全4 // 5 // 6 // 7 // 8 9 #import "Vi ...

  2. OC中的NSArray和NSMutableArray、NSDictionary和NSMutableDictionary用法

    一:NSArray 和NSMutableArray 1: NSArray:不可变数组 NSArray是OC中使用的数组,只能用来存放OC对象,不能存放非OC对象如基本数据类型 它使不可变的,一旦初始化 ...

  3. 6 OC 中的isa 指针

    目录 一 isa 指针 二 类对象中的superclass 一 isa 指针 isa 指针 ,OC 中的对象都是有的 如下图所示,实例对象isa 指针指向 类对象,类对象的isa 指针指向 元类对象 ...

  4. 7 OC 中class 类的结构

    目录 一 OC 中class 的结构 https://opensource.apple.com/tarballs/objc4/ 在最新的objc源码中 化繁就简来看的话 是以下结构 struct ob ...

  5. 5 OC 中的三种对象

    目录 OC 中对象的分类 一  instance 对象 二 类对象 三  元类对象 总结: OC 中对象的分类 instance 对象 类对象 元类对象 一  instance 对象 内存中包含哪些信 ...

  6. 4 OC 中的内存分配以及内存对齐

    目录 一  OC  中的内存分配 一  OC  中的内存分配 student 结构体明明是20?为什么是24个字节,因为结构体会按照本身成员变量最大的内存进行对齐,最大成员变量是8个字节,因此就是8的 ...

  7. RAC -代替OC 中的代理

    学以致用, 有的时候学习了很多理论 却还是忘了实践 OC 中代替代理 简洁编程 #import "ViewController.h" #import <ReactiveObj ...

  8. iOS开发几年了,你清楚OC中的这些东西么!!!?

    iOS开发几年了,你清楚OC中的这些东西么!!!? 前言 几年前笔者是使用Objective-C进行iOS开发, 不过在两年前Apple发布swift的时候,就开始了swift的学习, 在swift1 ...

  9. OC中的NSNumber、NSArray、NSString的常用方法

    和C语言不同,在Objective-C语言中,有单独的字符串类NSString.C语言中,string是由 char(ASCLL码)字符组成 OC中,字符串是由unichar(Unicode)字符组成 ...

最新文章

  1. 3.3.2 函数参数不得不说的几件事
  2. Java 程序员都该懂的 HashMap
  3. python seaborn 热图 值对应颜色_基于行值的seaborn热图配色方案
  4. POJ 3122 分披萨(二分查找)
  5. android 百度地图开发 怎么减小包的大小,最新的百度地图Android开发包中,如何隐藏右下角的放大缩小控件...
  6. 外媒:苹果正研发新的Apple Watch机型 显示屏和速度将升级
  7. c语言文件pt是什么意思,C语言文件p的pt.ppt
  8. 有哪些特点_锌钢栅栏有哪些特点?锌钢栅栏特点有哪些?
  9. laravel中修改默认时区
  10. ××× L2TP over IPSec 配置
  11. 阿拉伯数字转中国人民币大写字符串
  12. Python之pandas库--基础
  13. 《超新星纪元》读后感
  14. 隐私计算是什么?有什么作用?
  15. 记录一个屏幕适配的方案。
  16. 围棋,人vs人(自行判断输赢)
  17. 《唐伯虎点秋香》中的超级对联
  18. 谷歌硬盘,百度云盘等超大文件利用IDM加速下载,防止限流方法
  19. 1125和855最小公倍数C语言,备战1125联考 | 巧用“最小公倍数”,计算题1秒变简单...
  20. windows10 桌面右键菜单自定义

热门文章

  1. 左连接,外连接,内连接的区别是什么,以及默认连接是什么
  2. 商业智能与大数据结合的一点感想(old)
  3. 数据集划分的三种常见方式!
  4. linux mysql 误删系统文件恢复_MySQL误删物理文件的恢复(Linux)
  5. 手把手开始构建java新项目—医疗健康管理系统(一)
  6. python3d画图mpl_toolkits.mplot3d
  7. Java菜鸟补给站---MySQL数据库 SQL 语句补充( 一 )
  8. 交叉验证——ESL chapter7.10
  9. android对战的象棋小游戏,使用GridView做棋盘
  10. android怎么把动图变成视频格式,Android 录制手机屏幕视频生成GIF图片实例详解