以加號 “+” 開頭,相當于static方法
3:see see 更健康
Objective-C
1.OC是一門基于C的面向對象語言,,是C語言的一個超集,,同時具有C語言的特征
2.OC對類的定義和實現(xiàn)以及初始化
//聲明類接口,繼承NSObject對象(該對象是OC中所有類的頂級父類,,所有類都繼承于它)
@interface ClassName :NSObject
//成員屬性和成員函數(shù)的聲明
+(void)function,;//類方法,不需要實例化對象就可以調用的方法
- (void)function2 :(NSString *)arg,;//成員方法,,必須通過實例化的對象調用
@end
//實現(xiàn)類
@imlementation ClassName
//成員屬性初始化和方法的定義
@end
對象的初始化:ClassName *obj = [[ClassName alloc] init]
OC中以消息機制傳遞信息,發(fā)送alloc消息給類分配內(nèi)存空間,,發(fā)送init消息生成對象,,指針指向對象本身。
3.類方法的調用
[obj function],;
NSString *str = [NSString stringWithString:@"hello"];
[obj function2 : str];
4.輸出函數(shù)
根據(jù)不同的輸出格式輸出不同的值 (%d :整形 ,,%@:對象<發(fā)送description消息>,%s:字符串)
NSlog(@“The result is %d”,intNum);
CF代表Core Foundation (Cocoa)
CFShow發(fā)送description給它顯示的對象,,CFShow打印的信息不會顯示時間戳,,NSLog會顯示,同時CFShow不需要格式字符 串,,它只能用于對象
CFShow(obj);
5.屬性
支持點表示法:myTableViewCell.textLabel.text = @"hello" 等價于 [[myTableViewCell textLabel] setText:@"hello"];
使用屬性生成器 property
在h文件中聲明: @property int year
在m文件中合成生成器:@synthesize year
使用 obj.year = 1999 相當于調用了 [obj setYear:1999];
可以自定義取值方法和賦值方法(getter and setter)
-(int)year
{
return year;
}
- (void) setYear : (int) newYear
{
//此處添加了一些基本的內(nèi)存管理方法,,保留新的值,釋放以前的值
if(newYear != year)
{
[year release];
year = [newYear retain];
}
}
也可以繞過oc的命名約定,,自己指定getter和setter方法的名稱,;
@property(getter = isExist,setter = setExist:) BOOL exist;
@synthesize exist;
使用過程中既可以使用新定義的方法名,也可以使用以前的方法(點表示法)
屬性的特性:readwrite readonly assign retain copy nonatomic
assign:默認行為,,使用@property int year就使用了assign行為,,就是給實例變量賦了一個值
retain:實現(xiàn)了兩個功能,一個是保留了賦值時傳遞的對象,,其次是賦值前釋放了以前值,,使用retain可以實現(xiàn)上面討論的內(nèi)存管理的優(yōu)點,使用時加上 @property (retain)int year,;
copy:發(fā)送一條復制的消息給被傳遞的對象,,保留它,并釋放任何以前的值,;
nonactomic:非原子訪問器,,加上后可以提升訪問速度,但當兩個線程同時修改同一個屬性時就會出現(xiàn)問題,,原子屬性可以保證屬性在被一個線程使用時不被另一個線程訪問,,不存在atomic關鍵字,默認情況下,,所有方法都是自動合成的,。(類似與java中的線程鎖機制synchronized)
readwrite:可讀寫
readonly:只讀