Object-c基礎知识.doc
文本预览下载声明
Object c 基础知识
文件类型说明:.h 头文件,用于定义类、实例变量及类中的方法等定义信息(interface)。.m 源文件,定义方法体,可实现objce-c和c方法(implementation)。.mm c++源文件
引用头文件:可通过#import关键字引入想要使用的头文件,该关键字作用通#include相同,不过import会确保每个文件只会被引用一次。
object-c中类的定义有两部分:interface和implementationinterface部分包含类的定义以及实例变量和方法。interfache通常定义在.h(头)文件中;implementation部分包含方法的实现部分(方法体),implementation通常定义在.m(源)文件中。
1 @interface MyClass : NSObject
2 {
3 int count;
4 id data;
5 NSString* name;
6 }
7 -(id)initWithString:(NSString*)aName;
8 +(MyClass*)createMyClassWithString:(NSString*)aName;
9 @end
在上述代码中,包含了以下信息:名为MyClass的类,继承于Cocoa框架中的NSObject类;定义了3个成员变量:count、data和name(@protected)以及声明了2个方法实例变量也可以放到源文件中定义,如:
1 // 源文件中的:NSObject为可选,一般情况下不用写
2 @implenmentation MyClass :NSObject
3 {
4 int count;
5 int data;
6 NSString *name;
7 }
8
9 -(id)initWithString:(NSString*)aName
10 {
11 ...
12 }
但需要注意的是,若成员变量定义在源文件中而非头文件中,则变量的访问权限都为@private.
object-c支持强类型和弱类型两种方式定义一个对象变量: 强类型定义时变量类型即类命,且为指针类型 弱类型定义使用id型定义
1 MyClass *myObject; // 强类型定义
2 id myObject; //弱类型定义
方法的定义和引用:Object-C中的方法同其它面向对象语言一样,分两种方法:实例方法(-)和类方法(+)(静态方法)。实例方法需要通过类的实例去调用,而静态方法可直接通过类名去调用。
1 - (void)insertObject:(id)anObject atIndex:(NSUInter)index;
上述代码中定义了一个名为insertObject:atIndex的实例方法,该方法无返回值,并定义了2个形参,类型分别为id和NSUInter。
在定义一个方法时,也可以不指定参数名,如:
1 // 声明一个没有参数名的方法
2 -(int) set: (int) n: (int) d;
3
4 // 方法调用
5 [object set : 4 : 5];
方法的调用:在Object-C中,调用一个方法叫做发送消息,方法调用语句定义在中括号[]中:
1 [myArray insertObject:anObject atIndex:0];
为了避免生成大量的临时变量,Object-C允许嵌套调用方法,使一个方法的返回值当作另一个方法的参数,如:
1 [[myAppObject theArray] inserObject:[myAppObject objectToInsert] atIndex:0];
成员变量:默认情况下,Object-C中的成员变量为@protected,可通过@public,@private关键字修改成员变量的可见性(只有成员变量拥有这些属性)。
1 @interface MyObject : NSObject
2 {
3 // 成员变量要定义在大括号中
4 @public int n1;
5 @private int n2;
6 @protected int n3;
7 }
8 ......
9 @end
10
11 // 通过类实例访问public的成员变量:
12 MyObject *mo = [[MyObject alloc] init];
13 mo-n1;
若要访问受保护的成员变量,需要在类中定义相应的get和set方法,通过类实例调用这些方法来达到访问或设置这些
显示全部