总结一下
1.类方法与实例方法
(减号) 代表实例方法,它在类的一个具体实例范围内执行,也就是说,你咋调用这个方法之前必须先创建一个类的实例;
(加号)代表类方法,可以通过类名直接调用,不需要创建一个类的实例。
调用
实例方法 [实例对象 方法名] 如
YJView * yv = [[YJView alloc]init];
[yv test];
类方法 [类名 方法名]
[YJView test];
有参数的时候
CABasicAnimation * animation = [YJView test:5];
2.判断网络状态(从网上找的) ,需要导入AFN框架,继承于AFHTTPSessionManager
.h文件
<井号>import "AFHTTPSessionManager.h"
@interface NetStatus : AFHTTPSessionManager
//创建单例,在需要网络判断的地方调用
+(instancetype)sharedClient;
@end
.m文件
<井号>import "NetStatus.h"
static NSString * BaseUrl = @"https://www.baidu.com/";
@implementation NetStatus
//实现单例方法
+(instancetype)sharedClient{
static NetStatus * _shareClient = nil;
// 用dispatch_once函数解决线程问题,防止多线程时被不同线程同时调用,类似加锁的功能
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_shareClient = [[NetStatus alloc]initWithBaseURL:[NSURL URLWithString:BaseUrl]];
_shareClient.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
[_shareClient.reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
// 整个app网络状态一般应该相同,所以当断网时显示不同页面应在这展示??
switch (status) {
case AFNetworkReachabilityStatusReachableViaWWAN:{
NSLog(@"移动网络");
break;
}
case AFNetworkReachabilityStatusNotReachable:{
NSLog(@"无网络");
break;
}
case AFNetworkReachabilityStatusReachableViaWiFi:{
NSLog(@"WIFI");
break;
}
case AFNetworkReachabilityStatusUnknown:{
NSLog(@"未知状态");
break;
}
default:
break;
}
}];
[_shareClient.reachabilityManager startMonitoring];
});
return _shareClient;
}
调用 [NetStatus sharedClient];
3.md5加密,需要导入<CommonCrypto/CommonDigest.h>
+(NSString *)md5:(NSString *)str{
const char *cStr = [str UTF8String];
unsigned char result[16];
CC_MD5(cStr, (unsigned)strlen(cStr), result); // This is the md5 call
NSString * restultStr = [NSString stringWithFormat:
@"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
result[0], result[1], result[2], result[3],
result[4], result[5], result[6], result[7],
result[8], result[9], result[10], result[11],
result[12], result[13], result[14], result[15]
];
return restultStr;
}