通知的寫(xiě)法
1.最普通寫(xiě)法:
[[NSNotificationCenter defaultCenter] postNotificationName:@"notificationName" object:nil];
2.PCH宏定義寫(xiě)法:#define NotificationName @"NotificationName"
3.寫(xiě)在.h文件中:static NSString *const NotificationName = @"NotificationName";
4.在.m中定義阻肿,.h中暴露:
.m
NSString *const NotificationName = @"NotificationName";
.h
extern NSString * const NotificationName;
具體哪種寫(xiě)法好廉白,查看官方文檔和API寫(xiě)法,采用的是第四種寫(xiě)法周瞎。
注釋寫(xiě)法:[Name of associated class] + [Did | Will] + [UniquePartOfName] + Notification
蘋果自己的API:
UIKIT_EXTERN NSNotificationName const UITextFieldTextDidBeginEditingNotification;
UIKIT_EXTERN NSNotificationName const UITextFieldTextDidEndEditingNotification;
UIKIT_EXTERN NSNotificationName const UITextFieldTextDidChangeNotification;
UIKIT_EXTERN簡(jiǎn)單來(lái)說(shuō),就是將函數(shù)修飾為兼容以往C編譯方式的、具有extern屬性(文件外可見(jiàn)性)、public修飾的方法或變量庫(kù)外仍可見(jiàn)的屬性律歼。
NSNotificationName
typedef NSString *NSNotificationName NS_EXTENSIBLE_STRING_ENUM;
其實(shí)就是NSString *,我們當(dāng)然可以用啡专。
用NSNotificationName代替NSString *的好處是什么险毁?直觀。別人一看到NSNotificationName就知道你這是在定義一個(gè)通知。
因此后續(xù)建議采用這種寫(xiě)法:
最后提供一個(gè)完整模板
// Foo.h
UIKIT_EXTERN NSNotificationName const GBCartNumberBecomeActiveNotification
// Foo.m
NSNotificationName const GBCartNumberBecomeActiveNotification = @"GBCartNumberBecomeActiveNotification";
記得在別的類里添加監(jiān)聽(tīng)的時(shí)候要導(dǎo)入定義通知名字的頭文件哦畔况,不然會(huì)訪問(wèn)不到這個(gè)NSNotificationName
PS:這個(gè)文章不錯(cuò):程序員眼中的APP
產(chǎn)品懂技術(shù)鲸鹦,就像流氓會(huì)武術(shù)。技術(shù)會(huì)點(diǎn)產(chǎn)品跷跪,就像會(huì)武術(shù)的人去耍流氓??????