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];