iOS開發(fā),通知應(yīng)該怎么寫比較規(guī)范瞄沙?當(dāng)然怎么寫都行己沛,但是規(guī)范的代碼會使得代碼維護更簡單。
學(xué)校通知放假的通知
1距境、初級的通知:直接在頭文件中寫上通知名
#import <Foundation/Foundation.h>
//小學(xué)給小學(xué)生發(fā)的放假通知
static NSString *const schoolHolidayNotification = @"schoolHolidayNotification";
@interface School : NSObject
@end
[[NSNotificationCenter defaultCenter] postNotificationName:schoolHolidayNotification object:nil];
2申尼、中級的通知:在源文件中定義,在源文件中用extern關(guān)鍵提供類外使用
#import "MiddleSchool.h"
NSString * const MiddleSchoolHolidayNotification = @"MiddleSchoolHolidayNotification";
@implementation MiddleSchool
@end
#import <Foundation/Foundation.h>
//中學(xué)給高中生發(fā)的放假通知
extern NSString * const MiddleSchoolHolidayNotification;
@interface MiddleSchool : NSObject
@end
[[NSNotificationCenter defaultCenter] postNotificationName:MiddleSchoolHolidayNotification object:nil];
3垫桂、稍微高級的通知:在2的基礎(chǔ)上师幕,規(guī)范了通知名的書寫,類名+助動詞+通知內(nèi)容+Notification
#import "Univercity.h"
NSString * const UnivercityWillHolidayNotification = @"UnivercityWillHolidayNotification";
@implementation Univercity
@end
#import <Foundation/Foundation.h>
//大學(xué)給大學(xué)生發(fā)的放假通知
extern NSString * const UnivercityWillHolidayNotification;
@interface Univercity : NSObject
@end
通知的規(guī)劃化
1诬滩、如果是需要類外使用霹粥,在類內(nèi)部定義,然后在類的外部用extern關(guān)鍵在修飾疼鸟,提供外部使用后控。
2、通知命名一般是:類名+助動詞[ will | did ]+通知名+Notification
例如
NSApplicationDidBecomeActiveNotification
NSTextViewDidChangeSelectionNotification
系統(tǒng)的通知
1空镜、UITextField的通知:
2浩淘、關(guān)于UIKIT_EXTERN
3捌朴、關(guān)于NSNotificationName
這樣看來NSNotificationName就是個字符串,其實就是NSSTring *馋袜,用這個字符串明確表明這是一個通知男旗。
看官方文檔中以下兩種寫法,都是一樣的:
//第一種寫法欣鳖,用NSNotificationName
UIKIT_EXTERN NSNotificationName const UITextFieldTextDidBeginEditingNotification;
UIKIT_EXTERN NSNotificationName const UITextFieldTextDidEndEditingNotification;
UIKIT_EXTERN NSNotificationName const UITextFieldTextDidChangeNotification;
//第二種寫法察皇,直接用NSString *
UIKIT_EXTERN NSString *const UITextFieldDidEndEditingReasonKey NS_AVAILABLE_IOS(10_0);
總結(jié)
最后,我們推薦和官方寫法保持一致泽台,簡潔又明了什荣,代碼風(fēng)格統(tǒng)一。
寫法一
這種需要有UIKit的頭文件怀酷,因為UIKIT_EXTERN實在UIKit里面定義的
//源文件定義
NSNotificationName const UnivercityWillHolidayNotification = @"UnivercityWillHolidayNotification";
//頭文件說明
UIKIT_EXTERN NSNotificationName const UnivercityWillHolidayNotification;
寫法二
//源文件定義
NSString * const UnivercityWillHolidayNotification = @"UnivercityWillHolidayNotification";
//頭文件說明
extern NSString * const UnivercityWillHolidayNotification;
結(jié)論:在引入了UIKit頭文件的稻爬,用寫法一;若是取不到宏UIKIT_EXTERN蜕依,就用寫法二吧桅锄。看個人喜好样眠。