Objective-C语言特征简析

2014-11-24 09:45:14 · 作者: · 浏览: 1

1. Objective-c中类的声明与定义


Objective-c中的类与C++语言的类含义是相同的,都有成员(实例)变量,成员(实例)函数,类函数,类变量,唯一的区别就是其称呼不同,本质是一个东西,类的声明和定义的表现形式也不同。@interface 中定义的实例变量默认情况下都为@protected,可以直接被子类引用,在@implementation和@property定义的实例变量为@private。其中在@interface中定义的@public变量需要用“->”来访问。


//MyClass.h


@interfaceMyClass : NSObject


{


int var;//定义在该接口内的变量,可以在子类中被直接访问,默认为@protected.


}


//带“-”号为成员函数,带“+”号的表示类函数


-(void)method1;//without param


-(void)method2:(int) number; // with one param


-(void)method3:(int)number andName (NSString*) name; //with two param


+(void)method4;//类函数 相当于C++中的public static



@propertyint myProperty; //定义属性 为@private访问


@end



//MyClass.m


#import“MyClass.h”


@implemetationMyClass{


int var1;//声明成员变量,叫实例变量 为@private


NSString* var2;


}


@syntherizemyProperty;


-(void)method1{}


-(void)method2:(int) number{}


-(void)method3:(int)number andName (NSString*) name{ var1 = number; var2 = name;}


+(void)method4{}



@end



2. Objective-c 语言中对象的分配内存与初始化


NSObject可以说是Foundation框架的根类,创建自定义类MyObject并继承NSObject,在用MyObject时需要先对其分配内存alloc和初始化init,其中最值的注意的是,alloc创建该对象并设置所有的实例变量为0,NSObject中提供的init函数仅仅是返回self,可以说只是一个占位符,需要我们重写该函数,以便能够初始化MyObject中的自定义的实例变量(instance variable)。


@implementationMyObject


-(id)init:(void){


self = [super init];


if(self){


//do your initialization


}


return self;


}


@end



MyObject*someObject = [[MyObject alloc] init];