單例,函式的三種呼叫方式

2021-07-04 10:57:26 字數 1831 閱讀 5067

函式的呼叫方式有三種:

第一種:通過self來呼叫本物件的成員函式

- (ibaction)captureorderbuttonpressed:(uibutton *)sender

第二種:通過類名呼叫靜態全域性函式

mbprogresshud.h

+(void)hudshowwithstatus :(id)viewcontroller : (nsstring *)string;//顯示1.8消失的提示框

mbprogresshud.m

+(void)hudshowwithstatus :(id)viewcontroller :(nsstring *)string

呼叫處:

[mbprogresshud hudshowwithstatus:self :[error localizeddescription]];

第三種:通過單例物件來呼叫單例的函式。

api.h

+ (instancetype)shareapi;

- (void)updatelocationparams:(nsdictionary *)params block:(void(^)(nserror *error))block;//更新地理位置

} 呼叫:

[[api shareapi] updatelocationparams:muparams block:^(nserror *error)

else

// [self getorders];

[self shownoticeview];

// [self setuprefresh];

} else

[self shownoticeview];

}];

+ (instancetype)shareapi

shareapi = [[api alloc] initwithbaseurl:[nsurl urlwithstring:baseurl]];

#else

shareapi = [[api alloc] initwithbaseurl:[nsurl urlwithstring:baseurl]];

#endif

});shareapi.responseserializer.acceptablecontenttypes = [nsset setwithobject:@"text/html"];//設定相應內容型別

shareapi.securitypolicy.allowinvalidcertificates = no;

[shareapi.requestserializer settimeoutinterval:g_requerespondtime];

return shareapi;

}

sharedinstace = [[self alloc] init];

});return sharedinstace;

若你對c/c++念念不忘也可以用.h檔案定義全域性變數,在.m檔案裡包含全域性變數標頭檔案就可以,注意在.mm檔案裡不能用包含全域性變數的標頭檔案的方式引用全域性變數,需要用extern 宣告你需要用到全域性變數。乙個變數可以有多個宣告,只允許乙個定義。

extern nsstring *g_devicetype;

實現單例的三種方式

1 必須在該類中 自己先建立出乙個物件並私有化物件.2 私有化自身的構造器 防止外界通過構造器建立新的物件 3 想外暴露乙個公共的靜態方法用於獲取自身的物件 目的 保證某乙個在整個應用中某乙個類有且只有乙個例項 乙個類在堆記憶體只存在乙個物件 即所有指向該型別例項的引用都指向同一塊記憶體空間。cla...

單例的三種實現方式

方式一 類方法實現單例模式 class mysql instance none def init self,host,port self.host host self.port port q classmethod defsingleton cls ifnot cls.instance cls.in...

函式的三種呼叫方式

第一種 函式立即呼叫執行模式。這裡面的this指向window function add a,b add this window true 第二種 通過建構函式建立物件,然後呼叫自己的方法 這裡的this指向物件本身 也可說是函式的呼叫者 script function fun varf new f...