iOS - Tips - 黑魔法
1. objc_subclassing_restricted
在@ interface 前, 用__attribute__((objc_subclassing_restricted))修飾的類, 不允許繼承.
2. objc_requires_super
用- (void)method __attribute__((objc_requires_super));修飾的方法, 標識著在子類繼承這個方法時, 需要呼叫 super
3. objc_boxable
@(...) 語法糖可以將基本資料型別 box 成 NSNumber 物件,假如想 box 一個 struct 型別或是 union 型別成 NSValue 物件,可以使用這個屬性:
typedefstruct__attribute__((objc_boxable)) {
CGFloatx, y, width, height;
} XXRect;
CGRect rect1 = {1, 2, 3, 4};
NSValue *value1 = @(rect1);// <--- Compile Error
XXRect rect2 = {1, 2, 3, 4};
NSValue *value2 = @(rect2); // √
4. constructor / destructor
構造器和析構器,加上這兩個屬性的函式會在分別在可執行檔案(或 shared library)load和 unload 時被呼叫,可以理解為在 main() 函式呼叫前和 return 後執行:
PS:若有多個 constructor 且想控制優先順序的話,可以寫成 __attribute__((constructor(101))),裡面的數字越小優先順序越高,1 ~ 100 為系統保留。
__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;
} // Console: // "beforeMain" -> "main" -> "afterMain"
相關文章
- 《iOS Tips 一》iOS
- iOS Tips 小貼iOS
- iOS 開發中的 Tips(一)iOS
- iOS H5容器的一些探究(二):iOS下的黑魔法NSURLProtoiOSH5
- iOS H5容器的一些探究(二):iOS下的黑魔法NSURLProtocoliOSH5Protocol
- iOS開發中的小Tips(一)iOS
- 22個CSS黑魔法CSS
- Five SAP HANA implementation tips CIOs should knowiOS
- Weex 學習與實踐(二):iOS 整合的 tipsiOS
- Gradle命令列黑魔法Gradle命令列
- iOS 推送全解析,你不可不知的所有 Tips!iOS
- 每日 30 秒 ⏱ 除錯黑魔法除錯
- python黑魔法---迭代器(iterator)Python
- Python “黑魔法” 之 Meta ClassesPython
- Python 黑魔法 --- 描述器(descriptor)Python
- Python “黑魔法” 之 Generator CoroutinesPython
- 【並查集】黑魔法師之門並查集
- Tips
- CSS 行內對齊的黑魔法CSS
- python黑魔法---裝飾器(decorator)Python
- Python 黑魔法之描述符Python
- [九九Tips]-iOS反編譯獲取線上APP的素材圖片iOS編譯APP
- NPM TipsNPM
- AutoLayout Tips
- Tips HTMLHTML
- 前端 - tips前端
- Swift TipsSwift
- NumPy Tips
- Git TipsGit
- note tips
- hector tips
- PB Tips
- Tips for SD
- interview tipsView
- Mysql tipsMySql
- SAP Tips
- English Tips
- Docker TipsDocker