clang隨筆

Clang 命令

1、將.m文件轉(zhuǎn)成.cpp略水,由oc轉(zhuǎn)成c++森瘪,方便查看大概的源碼實現(xiàn)。

clang -rewrite-objc xxx.m   (xxx指文件名)

如果報錯吵血,例如 fatal error: 'UIKit/UIKit.h' file not found谎替,可用以下命令代替

clang -x objective-c -rewrite-objc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk xxx.m

Clang Attributes

2、objc_subclassing_restricted
定義不可繼承的類

__attribute__((objc_subclassing_restricted))
@interface MyCar : NSObject
@end

3蹋辅、objc_requires_super
子類繼承父類方法時钱贯,必須調(diào)用super,否則產(chǎn)生警告侦另。

@interface Father : NSObject
- (void)playGame __attribute__((objc_requires_super));
@end
@implementation Father
- (void)playGame {
NSLog(@"play cs");
}
@end
@interface Son : Father
@end
@implementation Son
- (void)playGame {
} //warning missing [super playGame]
@end

4秩命、objc_boxable
可用語法糖將struct或者union類型裝箱成NSValue對象

typedef struct __attribute__((objc_boxable)) {
CGFloat x, y, width, height;
} XXRect;

XXRect rect = {1, 2, 3, 4};
NSValue *value = @(rect);

5、constructor / destructor
構(gòu)造器和析構(gòu)器褒傅,分別在可執(zhí)行文件load和unload時被調(diào)用弃锐,constructor比load晚,比main函數(shù)早殿托。
可有多個constructor霹菊, attribute((constructor(101))),數(shù)字越小優(yōu)先級越高支竹,1 ~ 100 為系統(tǒng)保留旋廷。

__attribute__((constructor))
static void beforeMain(void) {
NSLog(@"beforeMain");
}
__attribute__((destructor))
static void afterMain(void) {
NSLog(@"afterMain");
}
int main(int argc, const char * argv[]) {
NSLog(@"main");
return 0;
}
// 輸出: beforeMain -> main -> afterMain

6、enable_if
只能用在 C 函數(shù)上礼搁,可以用來實現(xiàn)參數(shù)的靜態(tài)檢查:

static void test(int a)
__attribute__((enable_if(a > 0 && a < 10, "不在此范圍內(nèi)"))) {
printf("%d", a);
}

7饶碘、cleanup
用來聲明變量,當此變量作用域結(jié)束時馒吴,調(diào)用指定的C方法扎运。

static void callback(__strong NSString **string) {
    NSLog(@"%@", *string);
}
{
//該變量作用域,作用域結(jié)束時調(diào)用callback
__strong NSString *string __attribute__((cleanup(callback))) = @"abc";
}
執(zhí)行輸出: abc

8饮戳、overloadable
用于 C 函數(shù)豪治,可以定義若干個函數(shù)名相同,但參數(shù)不同的方法莹捡,調(diào)用時編譯器會自動根據(jù)參數(shù)選擇函數(shù)原型:

__attribute__((overloadable)) void testMan(int number) {
NSLog(@"%@", @(number));
}
__attribute__((overloadable)) void testMan(id obj) {
NSLog(@"%@", obj);
}
__attribute__((overloadable)) void testMan(CGRect rect) {
NSLog(@"%@", NSStringFromCGRect(rect));
}

testMan(@"123");
testMan(234);
testMan(CGRectMake(1, 2, 3, 4));

9鬼吵、objc_runtime_name
將類或協(xié)議的名字在編譯時指定成另一個,常用在代碼混淆篮赢。

__attribute__((objc_runtime_name("MyCar")))
@interface MyBike : NSObject
@end
NSLog(@"%@", NSStringFromClass([MyBike class])); // "MyCar"
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末齿椅,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子启泣,更是在濱河造成了極大的恐慌涣脚,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寥茫,死亡現(xiàn)場離奇詭異遣蚀,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進店門芭梯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來险耀,“玉大人,你說我怎么就攤上這事玖喘∷ξ” “怎么了?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵累奈,是天一觀的道長贬派。 經(jīng)常有香客問我,道長澎媒,這世上最難降的妖魔是什么搞乏? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮戒努,結(jié)果婚禮上请敦,老公的妹妹穿的比我還像新娘。我一直安慰自己柏卤,他們只是感情好冬三,可當我...
    茶點故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著缘缚,像睡著了一般勾笆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上桥滨,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天窝爪,我揣著相機與錄音,去河邊找鬼齐媒。 笑死蒲每,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的喻括。 我是一名探鬼主播邀杏,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼唬血!你這毒婦竟也來了望蜡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤拷恨,失蹤者是張志新(化名)和其女友劉穎脖律,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腕侄,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡小泉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年芦疏,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片微姊。...
    茶點故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡酸茴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出柒桑,到底是詐尸還是另有隱情弊决,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布魁淳,位于F島的核電站,受9級特大地震影響与倡,放射性物質(zhì)發(fā)生泄漏界逛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一纺座、第九天 我趴在偏房一處隱蔽的房頂上張望息拜。 院中可真熱鬧,春花似錦净响、人聲如沸少欺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赞别。三九已至,卻和暖如春配乓,著一層夾襖步出監(jiān)牢的瞬間仿滔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工犹芹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留崎页,地道東北人。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓腰埂,卻偏偏與公主長得像飒焦,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子屿笼,可洞房花燭夜當晚...
    茶點故事閱讀 45,515評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 前言 2000年牺荠,伊利諾伊大學(xué)厄巴納-香檳分校(University of Illinois at Urbana-...
    星光社的戴銘閱讀 15,905評論 8 180
  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 1,725評論 0 9
  • 繼上Runtime梳理(四) 通過前面的學(xué)習刁卜,我們了解到Objective-C的動態(tài)特性:Objective-C不...
    小名一峰閱讀 758評論 0 3
  • 這篇文章完全是基于南峰子老師博客的轉(zhuǎn)載 這篇文章完全是基于南峰子老師博客的轉(zhuǎn)載 這篇文章完全是基于南峰子老師博客的...
    西木閱讀 30,568評論 33 466
  • 浮云散盡月光長蛔趴,透軒窗挑辆,入村房例朱。 銀瀉屏圖,千里舞霓裳鱼蝉。 閑看鄉(xiāng)關(guān)夜色滿洒嗤,蕭瑟處,更蒼涼魁亦。 朔風凝露桂花黃渔隶,修竹揚...
    逸塵居士閱讀 362評論 0 0