W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
宏名:CALLBACK_BIND_1
宏定義:#define CALLBACK_BIND_1(__selector__,__target__, ...) std::bind(&__selector__,__target__, std::placeholders::_1, ##__VA_ARGS__)
解釋?zhuān)哼@是回調(diào)宏定義,__selector__代表回調(diào)方法, __target__代表目標(biāo)對(duì)象, CALLBACK_BIND_0表示回調(diào)方法沒(méi)有參數(shù),CALLBACK_BIND_1表示回調(diào)方法有一個(gè)參數(shù),以此類(lèi)推
示例代碼:
// CALLBACK_BIND_2對(duì)應(yīng)的tableViewHeightForRowAtIndexPath方法有兩個(gè)參數(shù)
m_pTableView->onCellHeightAtIndexPath(CALLBACK_BIND_2(TableViewTest::tableViewHeightForRowAtIndexPath, this));
// tableViewHeightForRowAtIndexPath的實(shí)現(xiàn) 兩個(gè)參數(shù)分別為section和row
unsigned int TableViewTest::tableViewHeightForRowAtIndexPath(unsigned int section, unsigned int row)
{
return 130;
}
// CALLBACK_BIND_1對(duì)應(yīng)的tableViewHeightForHeaderInSection方法有一個(gè)參數(shù)
m_pTableView->onHeightForHeaderInSection(CALLBACK_BIND_1(TableViewTest::tableViewHeightForHeaderInSection, this));
// tableViewHeightForHeaderInSection的實(shí)現(xiàn) 一個(gè)參數(shù)是section
unsigned int TableViewTest::tableViewHeightForHeaderInSection(unsigned int section)
{
return 50;
}
宏名:CC_LISTENING_FUNCTION
宏定義:
#define CC_LISTENING_FUNCTION(FUNCTION, VARNAME)\
protected: std::function<FUNCTION> m_ob##VARNAME{nullptr};\
public: void on##VARNAME(const std::function<FUNCTION>& var){ m_ob##VARNAME = var; }
解釋?zhuān)褐饕娲鷇elegate,之前的需要先設(shè)置代理,然后實(shí)現(xiàn)代理中的方法,現(xiàn)在就可以直接實(shí)現(xiàn)方法,方便、簡(jiǎn)潔。
FUNCTION代表回調(diào)的方法,VARNAME代表類(lèi)中的方法。
示例:
CC_LISTENING_FUNCTION(unsigned int(unsigned int section), HeightForHeaderInSection);
// 解釋?zhuān)篐eightForHeaderInSection為類(lèi)CATableView的方法名,用到時(shí)前面需要加on,unsigned int section為回調(diào)方法的參數(shù),
// unsigned int為回調(diào)方法的返回值類(lèi)型。
// 用法
m_pTableView->onHeightForHeaderInSection(CALLBACK_BIND_1(TableViewTest::tableViewHeightForHeaderInSection, this));
// 實(shí)現(xiàn)tableViewHeightForHeaderInSection回調(diào)方法
unsigned int TableViewTest::tableViewHeightForHeaderInSection(unsigned int section)
{
return 50;
}
判斷平臺(tái)的宏:
#define CC_PLATFORM_UNKNOWN 0 // 未知平臺(tái)
#define CC_PLATFORM_IOS 1 // 蘋(píng)果手機(jī)
#define CC_PLATFORM_ANDROID 2 // 安卓手機(jī)
#define CC_PLATFORM_WIN32 3 // Windows系統(tǒng)
#define CC_PLATFORM_LINUX 5 // LINUX 系統(tǒng)
#define CC_PLATFORM_BADA 6 // 三星智能手機(jī)操作系統(tǒng)
#define CC_PLATFORM_MAC 8 // 蘋(píng)果的Mac系統(tǒng)
#define CC_PLATFORM_EMSCRIPTEN 10 // EMSCRIPTEN系統(tǒng)
#define CC_PLATFORM_WINRT 12 // windows rt
#define CC_PLATFORM_WP8 13 // Windows Phone 8系統(tǒng)
CC_TARGET_PLATFORM用于來(lái)判斷平臺(tái)。
下面來(lái)看一個(gè)通過(guò)判斷平臺(tái)打開(kāi)網(wǎng)址的示例:
void openUrl(const std::string &url)
{
// 如果當(dāng)前系統(tǒng)是MAC系統(tǒng)
#if (CC_TARGET_PLATFORM == CC_PLATFORM_MAC)
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:[NSString stringWithUTF8String:url.c_str()]]];
// 如果當(dāng)前系統(tǒng)是IOS系統(tǒng)
#elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithUTF8String:url.c_str()]]];
#endif
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話(huà):173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: