nsstring

YYModel的底层实现原理

匿名 (未验证) 提交于 2019-12-03 00:22:01
实际使用时,需要对其遍历,取出容器中得字典,然后继续字典转模型。( YYModel 的核心是通过 runtime 获取结构体中得 Ivars 的值,将此值定义为 key, 然后给 key 赋 value 值,所以我们需要自己遍历容器( NSArray , NSSet , NSDictionary ),获取每一个值,然后 KVC )总结起来就是: 底层核心是 运用runtime获取类结构体中Ivars,进行KVC操作,然后根据不同情况进行分别处理 。 1.Model 属性名和 JSON 中的 Key 不相同 // JSON: { "n" : "Harry Pottery" , "p" : 256 , "ext" : { "desc" : "A book written by J.K.Rowing." }, "ID" : 100010 } // Model: @interface Book : NSObject @property NSString *name; @property NSInteger page; @property NSString *desc; @property NSString *bookID; @end @implementation Book //返回一个 Dict,将 Model 属性名对映射到 JSON 的 Key。 + ( NSDictionary *

iOS UIWebview 引用URL时存 cookie 方法 并向localStorage中存值

匿名 (未验证) 提交于 2019-12-03 00:22:01
向URL中注入cookie: -( void )saveCookie { NSURL *url= [ NSURL URLWithString : self . urlStr ]; NSString *hostStr= url. host ; //注入Cookie NSMutableArray *myMuArr=[ NSMutableArray array ]; NSMutableDictionary *cookieProperties = [ NSMutableDictionary dictionary ]; setObject : @"pId" forKey : NSHTTPCookieName ]; setObject :[ NSString stringWithFormat : @"%@" ,pUserID] forKey : NSHTTPCookieValue ]; setObject :hostStr forKey : NSHTTPCookieDomain ]; setObject : @"/" forKey : NSHTTPCookiePath ]; setObject : @"0" forKey : NSHTTPCookieVersion ]; NSHTTPCookie *cookie1 = [ NSHTTPCookie cookieWithProperties

iOS 流量统计

匿名 (未验证) 提交于 2019-12-03 00:21:02
在网上查了一下关于流量统计的资料,整理了一下 Demo地址 #import "FolwBytesTools.h" #include <arpa/inet.h> #include <net/if.h> #include <ifaddrs.h> #include <net/if_dl.h> typedef enum { 1 , //WiFi状态下发送流量 2 , //WiFi状态下接收流量 3 , //WiFi状态下消耗总流量 4 , //移动网络下发送流量 5 , //移动网络下接收流量 6 , //移动网络下消耗总流量 }FolwBytesNum; @implementation FolwBytesTools +( FolwBytesTools *)sharedInstance { static dispatch_once_t onceToken; static FolwBytesTools * sSharedInstance; dispatch_once (&onceToken, ^{ FolwBytesTools alloc ] init ]; return sSharedInstance; } /* - ( NSString *)getWiFiSentFolwBytes { NSString *bytesStr; self getFolwBytesWithTyep :

IOS开发――获取本地音频文件(属性/信息)

匿名 (未验证) 提交于 2019-12-03 00:19:01
获取本地音频文件地址: NSString *songsDirectory=MUSIC_FILE_ALL;//沙盒地址 NSBundle *songBundle=[NSBundle bundleWithPath:songsDirectory]; NSString *bundlePath=[songBundle resourcePath]; NSArray *arrMp3=[NSBundle pathsForResourcesOfType:@"mp3" inDirectory:bundlePath]; for (NSString *filePath in arrMp3) { [self.wMp3URL addObject:filePath]; } 解析音频文件属性: -(void)mDefineUpControl{ NSString *filePath = [self.wMp3URL objectAtIndex: 0 ];//随便取一个,说明 //文件管理,取得文件属性 NSFileManager *fm = [NSFileManager defaultManager]; NSDictionary *dictAtt = [fm attributesOfItemAtPath:filePath error:nil]; //取得音频数据 NSURL *fileURL=[NSURL

iOS 13 DeviceToken获取发生变化

匿名 (未验证) 提交于 2019-12-03 00:15:02
问题描述: iOS 13 通过[deviceToken description]获取到的内容已经变了,这段代码运行在 iOS 13 上已经无法获取到准确的DeviceToken字符串了, NSString *dt = [deviceToken description]; dt = [dt stringByReplacingOccurrencesOfString: @"<" withString: @""]; dt = [dt stringByReplacingOccurrencesOfString: @">" withString: @""]; dt = [dt stringByReplacingOccurrencesOfString: @" " withString: @""]; 解决方案: (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { if (![deviceToken isKindOfClass:[NSData class]]) return; const unsigned *tokenBytes = [deviceToken bytes]; NSString *hexToken =

WKWebView单个界面添加请求头

匿名 (未验证) 提交于 2019-12-03 00:11:01
https://www.jianshu.com/p/14b9ea4bf1d4 https://github.com/Yeatse/NSURLProtocol-WebKitSupport/blob/master 重点在这 - (void)setUrl:(NSURL *)url { _url = url; HWWeakSelf(weakSelf) // NSURLRequest *request = [NSURLRequest requestWithURL:weakSelf.url]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:weakSelf.url]; #pragma mark - 添加请求头 (例子需要根据自己的需求修改) NSTimeInterval timeInterval = [[NSDate date] timeIntervalSince1970];//当前时间距离 NSString *key = [NSString stringWithFormat:@"%.0f0001#j0ZAqg",timeInterval]; [request setValue:[HWDataManager getMD5HashWithMessage:key] forHTTPHeaderField:@

iOS 静态、全局变量、常量

匿名 (未验证) 提交于 2019-12-03 00:09:02
关键字static 两个概念:生命周期、作用域 生命周期 :这个变量能存活多久,它所占用的内存什么时候分配,什么时候收回。 作用域 :这个变量在什么区域是可见的,可以拿来用的。 static 分两种情况:修饰局部变量、修饰全局变量 1、 static 修饰局部变量 局部变量:在函数/方法/代码块内声明的变量。它的生命周期、作用域都是在这个代码块内。 局部变量 存储在栈区(stack) 一旦出了这个代码块,存储局部变量的这个栈内存就会被回收,局部变量也就被销毁。 当用 static 修饰局部变量时,变量被称为 静态局部变量 ,和全局变量,静态全局变量一样,是存储在‘静态存储区’。 存储在 静态存储区 的变量,其内存直到 程序结束 才会被销毁。 即,生命周期是整个源程序。 静态局部变量 的生命周期是整个源程序,但,作用域是声明它的代码块内。 2、 static 修饰全局变量 当全局变量没有使用 static 修饰时 其存储在静态存储区,直到程序结束才销毁。也就是其作用域是整个源程序。 我们可以使用 extern 关键字来引用这个全局变量。 当全局变量使用 static 修饰时 其生命周期没有变,依旧是在程序结束时才销毁。但是其作用域变了。现在只限于申明它的这个文件才可见。 使用 extern 关键字无法引用这个全局变量。 全局变量本来是在整个源程序的所有文件都可见, static

iOS设计模式之适配器模式

匿名 (未验证) 提交于 2019-12-02 23:59:01
一,适配器的定义 定义 将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作 需求场景 需要使用以前开发的“一些现存的对象”,但是新环境中要求的接口是这些现存对象所不满足的 二,适配器的结构图   实现步骤: 定义接口,规范适配器的功能 定义适配器父类,便于各个子类的对于接口功能的实现 子类适配器继承父类适配器,实现子类下的接口功能 父类指针指向子类,调用子类的实现方法   结构图: 三,代码示例 接口协议 CellPhoneProtocol.h /** * @brief 面向接口编程,协议负责定义适配接口 */ @protocol CellPhoneProtocol < NSObject > - ( NSString *) name ; - ( NSString *) playMusic ; - ( NSString *) playMovie ; 父类适配器 CellPhone.h @interface CellPhone : NSObject < CellPhoneProtocol > @property ( nonatomic , strong ) id data ; //生成子类接受数据的变量 - ( instancetype ) initWithData :( id ) data ; //便于子类接受数据源

iOS中计算字符串NSString的高度

匿名 (未验证) 提交于 2019-12-02 23:57:01
根据固定宽度计算字符串高度: 1 NSString * info = @ "但是公司的高度是广东省公司的广东省高速度来开个大帅哥多撒谎个爱好就跟他说噶三公司噶是的刚好是我哥如果黑暗如果坏都干撒降低公司及嘎斯进欧冠赛欧结果就赛欧国际韶关;可垃圾费;阿尔加两块;三个身高萨嘎干撒的公司的高度上收到公司的公司都给ID搜狗破is打个屁偶是东莞IP手动皮革是滴哦苹果是滴哦苹果度搜皮为欧公司的漂漂是第三个是干撒噶是的噶虽然刚撒旦个撒公司的公司的高度" ;; 2 CGFloat textW = CONVER_VALUE ( 345.0f ) - CONVER_VALUE ( 15.0f ) * 2 ; 3 CGRect infoRect = [ info boundingRectWithSize : CGSizeMake ( textW , MAXFLOAT ) options : NSStringDrawingUsesLineFragmentOrigin attributes :@{ NSFontAttributeName :[ UIFont systemFontOfSize : CONVER_VALUE ( 13.0f )]} context : nil ]; 4 NSLog (@ "字符串高度是:%f" , ceil ( infoRect . size . height )); 来源:博客园

iOS 视图渲染数据转CVPixelBuffer

匿名 (未验证) 提交于 2019-12-02 23:55:01
void *pxdata = CVPixelBufferGetBaseAddress(pxbuffer); - ( CVPixelBufferRef ) CVPixelBufferRef { CGSize size = self . frame . size ; NSDictionary * options = @{( NSString *) kCVPixelBufferCGImageCompatibilityKey : @YES , ( NSString *) kCVPixelBufferCGBitmapContextCompatibilityKey : @YES , ( NSString *) kCVPixelBufferIOSurfacePropertiesKey : [ NSDictionary dictionary ]}; CVPixelBufferRef pxbuffer = NULL ; CGFloat frameWidth = size . width ; CGFloat frameHeight = size . height ; CVReturn status = CVPixelBufferCreate ( kCFAllocatorDefault , frameWidth , frameHeight , kCVPixelFormatType_32ARGB , (