大师网-带你快速走向大师之路 解决你在学习过程中的疑惑,带你快速进入大师之门。节省时间,提升效率

KZWFoudation基础配置之Debug模式

看日志,我是在接口返回的基类里去保存下接口的返回值,然后在viewcontroller的基类里写摇一摇进行展示返回。 代码如下: 1.创建一个KZWDebugService来管理日志的保存和删除 #import "KZWDebugService.h" #import "KZWConstants.h" @implementation KZWDebugService static id _debug = nil; + (id)currentDebug { @synchronized(self) { if (! [KZWDebugService saveDebug]; NSString *cookiesFolderPath = [librarypath stringByAppendingString:@"/Cookies"];

UITableView 数据刷新的一些坑

UITableView 数据刷新的一些坑 1. tableview reloadData 假设你有一个 tableview ,你的 cell 中有 UITextField 或者 UITextView,而且你在编辑这一行的数据。此时对文本框进行监听,然后调用了 reloadData,键盘就消失了。 /*Reloads everything from scratch. Redisplays visible rows. Note that this will cause any existing drop placeholder rows to be removed.*/ - (void)reloadData;

iOS调试WebView,简单到无门槛

iOS调试WebView,简单到无门槛 问题来源 近来这段时间一直在写内嵌在App中的Html,虽然在HBuilder中可以轻易的使用各种浏览器轻易调试Html,但是在Xcode中想调试Html却并不容易.Xcode的图形调试界面只能调试原生的UI.WKWebView和UIWebView只能显示黑屏.如下图所示. 使用Safari浏览器调试WebView 使用Safari浏览器调试WebView比较简单无需过多的程序配置,只需点击几个开关按钮即可.

iOS引用计数管理之揭秘计数存储

//强引用相关 RefcountMap refcnts;SideTables() { return *reinterpret_cast * (SideTableBuf); } 这样一来就很清晰了,StripedMap里面有一个PaddedT数组,StripedMap重载了[]符号,根据参数的哈希值取PaddedT数组的内容,数组里存的就是SideTable。 现在来理解reinterpret_cast什么意思。 reinterpret_cast:转换一个指针为其它类型的指针等,我们没必要去深究,这样理解就够了。 所以 SideTable table = SideTables()[this];

GPU vs CPU in iOS

GPU vs CPU in iOS 一直以来,我们做产品的时候并没有特别的去考虑CPU/GPU的使用,最近为了提升可视化功能的性能,发现合理使用GPU也是一个可以好好研究的部分,这里总结一下一些有用的信息。 中央处理器 CPU (Central Processing Unit) 是通用型处理器,可以用于处理任何计算,可称为软件层面计算;而图形处理器 GPU (Graphics Processing Unit) 是专用设计来处理图形图像,它基于硬件对高

3.无重复字符的最长子串

maxLength : resultLength subString .removeAll() maxLength = 1 break } } // 如果 resultLength和i 相加刚好等于letters.count - 1,就不需要再进行下面的遍历了。 // 因为此时的resultLength的长度是最长的了 if i + resultLength == (letters.count - 1) { break } } return resultLength } 3.2滑动窗口 func lengthOfLongestSubstring(_ s: String) - Int { let n = s.count var letters: [String] = [] for char in s { let tempStr: String = String.init(char) letters .

iOS 键盘管理器:FJFKeyboardHelper

这个方法跟第一个处理普通视图输入框的键盘遮挡方法差不多,唯一的区别就是键盘即将显示的时候,列表是通过设置contentOffset来进行偏移,普通视图是通过设置frame来进行偏移。 第三种:使用者自己处理键盘回调 /** 处理 键盘 @param showBlock 显示 回调 @param hideBlock 隐藏 回调 */ + (void)handleKeyboardWithShowBlock:(MOAKeyboardManagerBlock)showBlock hideBlock:(MOAKeyboardManagerBlock)hideBlock;

iOS中相同IP,不同端口,session失效的问题

for(NSHTTPCookie*cookie in nCookies) { if([cookie isKindOfClass:[NSHTTPCookie class]]) { if([cookie.name isEqualToString:@"JSESSIONID"]) { NSNumber*sessionOnly =[NSNumber numberWithBool:cookie.sessionOnly]; NSArray*cookies = [NSArray arrayWithObjects:cookie.name, cookie.value, sessionOnly, cookie.domain, cookie.path, isSecure,nil]; } } } 读取cookie并写入: -(void)loadCookies { NSArray*cookies =[[NSUserDefaults standardUserDefaults]objectForKey:@"cookies"];

剑指offer读书笔记:每天一个编程题·iOS开发算法提升计划(1)

} bool isSymmetrical(BinaryTreeNode* pRoot1, BinaryTreeNode* pRoot2) { if(pRoot1 == nullptr pRoot2 == nullptr) return true; } BinaryTree.cpp #include #include "BinaryTree.h" BinaryTreeNode* CreateBinaryTreeNode(int value) { BinaryTreeNode* pNode = new BinaryTreeNode(); } void ConnectTreeNodes(BinaryTreeNode* pParent, BinaryTreeNode* pLeft, BinaryTreeNode* pRight) { if(pParent ! else printf("left child is nullptr.\n"); } void PrintTree(const BinaryTreeNode* pRoot) { PrintTreeNode(pRoot);

iOS-KVC

p1.dog = dog1; p2.dog = dog2; p3.dog = dog3; } 运行结果 3.手撸KVC之前 3.1 首先,我们要知道在OC中一个属性对应有四个成员变量,并且他们的优先级依次为:_key _isKey key isKey。 // Person.h #import @interface Person : NSObject { NSString *_name; } - (NSString *)isName { // 注释getName和name方法后,运行结果:KVC-Test[2115:403089] name: getter - isName return @"getter - isName"; } } if (_keyIvar) { object_setIvar(self, _keyIvar, value);

Metal入门教程(三)摄像头采集渲染

NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]; 总结 本文有两个核心点:从CVPixelBufferRef创建Metal纹理以及MetalPerformanceShaders的使用和理解,这两个点也引入后续Metal更复杂的能力,分别是视频渲染和自定义Shader计算。 同时从这个demo可以看到相对OpenGL,Metal对图像的处理更为方便,代码也更为精简。 代码的地址在这里,欢迎交流。 好玩的Metal

iOS逆向工程(8) 一条命令砸壳(详细菜鸟版)

bash_profile 四、砸壳演示 步骤: iOS 设备,USB 连接电脑。 打开Mac终端,输入iproxy 2222 22把当前连接设备的22端口(SSH端口),映射到电脑的2222端口。 新建终端页面,输入ssh -p 2222 root@127.0.0.1 连接iOS设备。 dump.py -l 查看需要砸壳的应用。 dump.py 应用名或bundle id进行砸壳. GIF演示: 参考文章:http://www.alonemonkey.com/2018/01/30/frida-ios-dump/http://bbs.iosre.com/t/frida-ios-dump/11640/11

SDWebImage学习笔记之dispatch_sync

NSLog(@"1"); // print 2 // print queue 串行队列标签 以上两种解决方法,代码依然运行在主线程,前一种方法改为了异步执行,后一种方法创建新的队列。 SDWebImage中的一段宏定义 #ifndef dispatch_queue_async_safe #define dispatch_queue_async_safe(queue, block)\ if (dispatch_queue_get_label(DISPATCH_CURRENT_QUEUE_LABEL) == dispatch_queue_get_label(queue)) {\ block();

iOS应用性能调优的25个建议和技巧

4[view release]; 2UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];h or inside a class extension 2@property (nonatomic, strong) NSDateFormatter *formatter; 使用类似SQLite的本地SQL数据库 使用 Core Data NSUserDefaults的问题是什么?虽然它很nice也很便捷,但是它只适用于小数据,比如一些简单的布尔型的设置选项,再大点你就要考虑其它方式了 XML这种结构化档

iOS开发·runtime原理与实践: 基本知识篇

iOS开发·runtime原理与实践: 基本知识篇 摘要:这篇文章首先介绍runtime原理,包括类,超类,元类,super_class,isa,对象,方法,SEL,IMP等概念,同时分别介绍与这些概念有关的API。接着介绍方法调用流程,以及寻找IMP的过程。然后,介绍一下这些API的常见用法,并介绍runtime的冷门知识。最后介绍一下runtime的实战指南。 1. 运行时 1.1 基本概念: 运行时 Runtime 的概念 Runtime 又叫

iOS开发-每周五复盘·分享-20180706

//i 为 NSInteger 类型 //i2 为 NSNumber 类型 【4】Xcode工程 gitignore配置(通用版)。 —————— 「下面这个是 通用版的 Xcode工程 gitignore配置。 绝大部分 iOS Xcode工程都适用,如果你有特殊的需要 git忽略掉的文件,可以自己在后面追加相应路径。」 —————— # Xcode .xccheckout *.dSYM.zip *.dSYM # CocoaPods Pods ! 是的,就是这一行命令,就可以实现了。 完整版如下: git rm -r --cached .

对 Swift 中可选类型的理解

+ 3) } 意思就是先判断 e 是否不为 nil, 如果不为 nil, 那么就强制解包取值。 3.3.2 绑定取值 // 绑定取值 if let e_value = e { print(e_value + 3) } 这种方式比第一种方式方便了很多,直接通过 if 判断当前的 e 是否有值,如果有值,则直接强制解包为 e_value, 如果没有值,那么当前的 if 条件不成立。 3.3.3 guard取值 // 函数 func hgFunc(e:Int?

夏日有你更清凉

夏日有你更清凉 图片发自简书App 咬一口,品一块 红瓜瓤,蜜汁液 满口凉,流进肚 沁心田,嬉笑脸 夏日的瓜儿好香甜 图片发自简书App 绿西瓜,家长买 送到园里分几块 你一块,我一块 块块都藏家长的爱 图片发自简书App 小孩儿,懂礼貌 吃着瓜儿不忘老 拿一块,递给爷 爷孙吃瓜儿淘淘乐 图片发自简书App 家长心,感动我 一个瓜,一份情 这个园,似一家 你心我心情系着他

至简小诗55〔刺猬〕

至简小诗55〔刺猬〕 我是一只刺猬 柔弱的身体外 包裹着坚硬的刺 对着所有的人 一幅不可接触的样子 骗自己,这便是我最好的安全 我是一只刺猬 孤独的身体外 包裹着坚硬的刺 对着靠近的人 一幅不可亲近的样子 骗对方,我就是那样不可温暖 我是一只刺猬 冷漠的心脏外 包裹着坚硬的刺 对另一个自己 一幅不可改变的样子 骗内心,冷漠便是莫大的快乐 我是一只刺猬 火热的内

简书《今日评论》第四十八卷

简书《今日评论》第四十八卷 开场白 诸位简友,有缘相聚;走过路过,千万不要错过!今日评论第四十八场开场了,有钱的打个赏,无钱的捧个场,喜欢的点个赞,愤青的莫骂娘! 本栏纯属个人观点,并不代表简书立场! 闲话少说,立即开讲: 每年7月份是全年最热的月份,随着天气的逐渐炎热,高温炙烤着万物心灵。简书同样也是热浪滚滚,热闹也非凡。 上期的话题是