一丶介紹
attribute 是 GNU C 的一大特色。
二丶使用
1.函數(shù)屬性
函數(shù)屬性可以幫助開發(fā)者把一些特性添加到函數(shù)聲明中,從而可以使編譯器在錯(cuò)誤檢查方面的功能更強(qiáng)大。attribute機(jī)制也很容易同非GNU應(yīng)用程序做到兼容之功效。
語法格式為:
format (archetype, string-index, first-to-check)
具體使用格式如下:
__attribute__((format(printf,m,n)))
__attribute__((format(scanf,m,n)))
m:第幾個(gè)參數(shù)為格式化字符串(format string);
n:參數(shù)集合中的第一個(gè),即參數(shù)“…”里的第一個(gè)參數(shù)在函數(shù)參數(shù)總數(shù)排在第幾
實(shí)例:

Paste_Image.png
去掉attribute((format(printf,1,2))),則會正常編譯。
擴(kuò)展:
順便看下OC里的NSLog定義:
NSObjCRuntime.h

Paste_Image.png

Paste_Image.png
2.變量屬性
2.1__attribute__((cleanup(...))),用于修飾一個(gè)變量,在它的作用域結(jié)束時(shí)可以自動執(zhí)行一個(gè)指定的方法
實(shí)例1:

Paste_Image.png
打印順序:

Paste_Image.png
注意:cleanup是先于這個(gè)對象的dealloc調(diào)用的
示例2:
Block屬性的使用
摘自:http://blog.sunnyxx.com/2014/09/15/objc-attribute-cleanup/

Paste_Image.png
2.2__attribute__((deprecated("")) 棄用
在OC中,可以使用 DEPRECATED_MSG_ATTRIBUTE(s) 這個(gè)宏
使用:

Paste_Image.png
三丶參考文章:
http://blog.csdn.net/juana1/article/details/6849120
http://blog.sunnyxx.com/2014/09/15/objc-attribute-cleanup/