conformsToProtocol
2019-06-06 本文已影响0人
Rumbles
conformsToProtocol conformsToProtocol
conformsToProtocol:是检测一个类是不是遵从某个协议(当然协议里声明称 required 的方法必须得实现)
conformsToProtocol: 检测一个类是否实现了某个方法【未必要申明 但是必须实现】
performSelector. 调用选择器方法
Person *per = [Person new];
if ([per respondsToSelector:@selector(eat)]) {. ///>没有申明但是实现了
[per performSelector:@selector(eat)];
}
Selector Class Protocol 都可以转化为字符串
FOUNDATION_EXPORT NSString *NSStringFromSelector(SEL aSelector);
FOUNDATION_EXPORT SEL NSSelectorFromString(NSString *aSelectorName);
FOUNDATION_EXPORT NSString *NSStringFromClass(Class aClass);
FOUNDATION_EXPORT Class _Nullable NSClassFromString(NSString *aClassName);
FOUNDATION_EXPORT NSString *NSStringFromProtocol(Protocol *proto)
FOUNDATION_EXPORT Protocol * _Nullable NSProtocolFromString(NSString *namestr)
FOUNDATION_EXPORT 与 #define 都可以用来定义常量
.h文件
FOUNDATION_EXPORT NSString *const kMyConstantString;
.m文件
NSString *const kMyConstantString = @"hello world";
#define kMyConstantString @"Hello"
由于过多的宏定义会产生过多的二进制文件,故如果宏定义比较多,建议用FOUNDATION_EXPORT
规定字典的key值。意思是 NSString 类型的枚举
- (void)addTimer:(NSTimer *)timer forMode:(NSRunLoopMode)mode;
typedef NSString * NSRunLoopMode NS_EXTENSIBLE_STRING_ENUM;
FOUNDATION_EXPORT NSRunLoopMode const NSDefaultRunLoopMode;
FOUNDATION_EXPORT NSRunLoopMode const NSRunLoopCommonModes;
.m可能的实现
NSString *const NSDefaultRunLoopMode = @"NSRunLoopMode"
NSString *const NSRunLoopCommonModes = @"NSRunLoopCommonModes"