OC 中的关键词 大全(1)

来源:互联网 发布:特种设备考试软件 编辑:程序博客网 时间:2024/04/28 22:01

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
0 0
原创粉丝点击