iOS开发通知规范化

iOS开发,通知应该怎么写比较规范?当然怎么写都行,但是规范的代码会使得代码维护更简单。

学校通知放假的通知

1、初级的通知:直接在头文件中写上通知名

#import 

//小学给小学生发的放假通知
static NSString *const schoolHolidayNotification = @"schoolHolidayNotification";

@interface School : NSObject

@end

[[NSNotificationCenter defaultCenter] postNotificationName:schoolHolidayNotification object:nil];

2、中级的通知:在源文件中定义,在源文件中用extern关键提供类外使用

#import "MiddleSchool.h"

NSString * const MiddleSchoolHolidayNotification = @"MiddleSchoolHolidayNotification";

@implementation MiddleSchool

@end
#import 

//中学给高中生发的放假通知
extern NSString * const MiddleSchoolHolidayNotification;

@interface MiddleSchool : NSObject

@end

[[NSNotificationCenter defaultCenter] postNotificationName:MiddleSchoolHolidayNotification object:nil];

3、稍微高级的通知:在2的基础上,规范了通知名的书写,类名+助动词+通知内容+Notification

#import "Univercity.h"

NSString * const UnivercityWillHolidayNotification = @"UnivercityWillHolidayNotification";

@implementation Univercity

@end
#import 

//大学给大学生发的放假通知
extern NSString * const UnivercityWillHolidayNotification;

@interface Univercity : NSObject

@end

通知的规划化

1、如果是需要类外使用,在类内部定义,然后在类的外部用extern关键在修饰,提供外部使用。

2、通知命名一般是:类名+助动词[ will | did ]+通知名+Notification

例如

NSApplicationDidBecomeActiveNotification
NSTextViewDidChangeSelectionNotification

系统的通知

1、UITextField的通知:

UITextField.png

2、关于UIKIT_EXTERN

UIKIT_EXTERN.png

3、关于NSNotificationName

NSNotificationName.png

这样看来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);

总结

最后,我们推荐和官方写法保持一致,简洁又明了,代码风格统一。

写法一

这种需要有UIKit的头文件,因为UIKIT_EXTERN实在UIKit里面定义的

//源文件定义
NSNotificationName const UnivercityWillHolidayNotification = @"UnivercityWillHolidayNotification";
//头文件说明
UIKIT_EXTERN NSNotificationName const UnivercityWillHolidayNotification;
写法二
//源文件定义
NSString * const UnivercityWillHolidayNotification = @"UnivercityWillHolidayNotification";
//头文件说明
extern NSString * const UnivercityWillHolidayNotification;

结论:在引入了UIKit头文件的,用写法一;若是取不到宏UIKIT_EXTERN,就用写法二吧。看个人喜好。

参考文章:http://www.cocoachina.com/ios/20171123/21298.html

你可能感兴趣的:(iOS开发通知规范化)