標籤:style class color int strong art
可視化編程 : 5.0之前 xib 5.0之後 Storyboard
注意事項:1.在AppDelegate中不用代碼初始化一個window 2.在general 設定 Main Interface(建立的時候自動化佈建的)
weak可以指向 但是沒有擁有權 strong有擁有權
單例特性:
1.唯一性 建立的對象永遠指向同一塊記憶體位址 2.不釋放 從開啟程式到後台關閉 對象都不釋放
單例安全:加鎖@synchronized 防止同一塊記憶體被建立兩次,破壞唯一性
//單例安全
@synchronized(self){
//如果不存在的話 就建立一個
if (!single) {
single = [[Singleton alloc]init];
}
return single;
}
轉載內容!
單例模式的意思就是只有一個執行個體。單例模式確保某一個類只有一個執行個體,而且自行執行個體化並向整個系統提供這個執行個體。這個類稱為單例類。
1.單例模式的要點:
顯然單例模式的要點有三個;一是某個類只能有一個執行個體;二是它必須自行建立這個執行個體;三是它必須自行向整個系統提供這個執行個體。
2.單例模式的優點:
1.執行個體控制:Singleton 會阻止其他對象執行個體化其自己的 Singleton 對象的副本,從而確保所有對象都訪問唯一執行個體。 2.靈活性:因為類控制了執行個體化過程,所以類可以更加靈活修改執行個體化過程 iOS中的單例模式 在objective-c中要實現一個單例類,至少需要做以下四個步驟:
1、為單例對象實現一個靜態執行個體,並初始化,然後設定成nil,
2、實現一個執行個體構造方法檢查上面聲明的靜態執行個體是否為nil,如果是則建立並返回一個本類的執行個體,
3、重寫allocWithZone方法,用來保證其他人直接使用alloc和init試圖獲得一個新實力的時候不產生一個新執行個體,
4、適當實現allocWitheZone,copyWithZone,release和autorelease。下面以SurveyRunTimeData為例子: static SurveyRunTimeData *sharedObj = nil; //第一步:靜態執行個體,並初始化。
@implementation SurveyRunTimeData
+ (SurveyRunTimeData*) sharedInstance //第二步:執行個體構造檢查靜態執行個體是否為nil
{
@synchronized (self)
{
if (sharedObj == nil)
{
[[self alloc] init];
}
}
return sharedObj;
}
+ (id) allocWithZone:(NSZone *)zone //第三步:重寫allocWithZone方法
{
@synchronized (self) {
if (sharedObj == nil) {
sharedObj = [super allocWithZone:zone];
return sharedObj;
}
}
return nil;
}
- (id) copyWithZone:(NSZone *)zone //第四步
{
return self;
}
- (id) retain
{
return self;
}
- (unsigned) retainCount
{
return UINT_MAX;
}
- (oneway void) release
{
}
- (id) autorelease
{
return self;
}
- (id)init
{
@synchronized(self) {
[super init];//往往放一些要初始化的變數.
return self;
}
}
@end
//單例對象
[UIApplication sharedApplication];
[NSNotificationCenter defaultCenter];//訊息中心
[NSUserDefaults standardUserDefaults];//plist檔案
[NSFileManager defaultManager];//檔案管理
[NSBundle mainBundle];//bundle路徑