- 博客(76)
- 收藏
- 关注
原创 iOS中数组的优化
先写些结论,有空了再分析iOS使用了类簇模式,比如数据创建NSArray和NSMutableArray时都是通过__NSPlacehodlerArray实现的。只是在alloc时出来的__NSPlacehodlerArray相关16字节,并且在应用里任何地方NSArray *arr =[NSArray alloc]都相同,所有的不可变数组alloc创建的都一样,同样可变数组的也都一样。
2018-01-21 22:49:02 482
原创 GCD会创建多少个线程
关于GCD队列,系统队列编号有11个,1为主队列,2为管理队列,3保留;4-11为8个全局队列,优先级分别为LOW、DEFAULT、HIGH 和 BACKGROUND,4个队列overcommit为YES,4个为NO;如果为overcommit队列,有新任务就会重新开辟新的线程,其中 dq->dq_width = UINT32_MAX;表示这些队列不限制并发数。任何自己创建的队列默认
2018-01-14 01:39:37 2849
原创 C扩展语法一:语句内嵌表达式
语句内嵌表达式格式为({xxx});其返回值为最后一个表达式的值花括号内可以是各种表达式,但是最后一个表达式必须是非声明以分号结尾的表达式,比如:最后如果是int test = 5;就会报错, int test = 5并没有返回值。语句内嵌表达式最常用的地方是在宏定义中。1.比如常用的max定义如果普通定义#define max(a,b) ((a) > (b) ? (a) : (b))
2017-12-10 02:51:18 908
原创 逗号表达式
逗号运算符特性:1.逗号运算符将两个以上的表达式用逗号联起来,2.计算过程为从左到右;3.整个逗号表达式会有一个返回值,是最后一个表达式的值4.逗号运算符的优先级在所有运算符中是最低的在实际讲逗号表达式的时候,经常会举比较不好的例子:1.一般讲逗号运算符时喜欢用类似例子:(1 + 2, 3 + 4),这个逗号表达式的返回值为3 + 4的值7,但是用这个例
2017-12-10 00:00:13 2425
原创 从一个无tableBar页面popToRootViewController
1.当popToRootViewController时有动画,或者rootViewController无tableBar没有任何问题2.如果rootViewController有tableBar,且返回过程不加动画就会有系统bug:页面无动画,但是tableBar会有一个pop返回的动画效果,因为是系统bug无法修改,并且一般产品也不会轻易修改产品方案,此时只能采用其他方法实现效果。
2017-10-18 17:18:16 533
原创 UITableView添加到UIViewController的view时显示问题
如果UITableView的类型为UITableViewStylePlain:无影响,正常如果UITableView的类型为UITableViewStyleGrouped:则会向下滚动了一段距离,严重影响了正常的展示;从网上查几种解决办法:1.设置headerView self.tableView.tableHeaderView = [[UIView alloc] in
2017-07-18 15:18:45 1246
原创 Carthage 缺点
项目中用了ComponentKit,不得不用Carthage,但是发现还不如cocoapod好用,当然可能是不习惯的问题。1. 库不丰富,很多库依然不支持(短时间内就算是,用了Carthage,也必须用cocoapod,按奥卡姆剃刀原理,不应该用)2.只支持 Framework,(这个倒是问题不大)3.无法在 Xcode 里定位到源码(这个看需求吧,但想看源码时确实比较坑)4.
2017-06-21 22:13:49 1303
转载 shell判断文件是否存在
转自:http://www.cnblogs.com/sunyubo/archive/2011/10/17/2282047.html1. shell判断文件,目录是否存在或者具有权限 2. #!/bin/sh 3. 4. myPath="/var/log/httpd/" 5. myFile="/var /log/httpd/access.log" 6. 7. #
2017-06-20 19:29:31 351
转载 afnetworking 3.0 How to POST with headers and HTTP Body
转自:http://www.jianshu.com/p/6a61812aedd2一般请求的话是这样 AFHTTPSessionManager *session = [AFHTTPSessionManager manager]; session.responseSerializer.acceptableContentTypes = [NSSet setWithObject
2017-06-19 21:16:16 616
转载 浅析静态库链接原理
静态库的链接基本上同链接目标文件.obj/.o相同,但也有些不同的地方。本文简要描述Linux下静态库在链接过程中的一些细节。静态库文件格式静态库远远不同于动态库,不涉及到符号重定位之类的问题。静态库本质上只是将一堆目标文件进行打包而已。静态库没有标准,不同的linux下都会有些细微的差别。大致的格式wiki上描述的较清楚:[plain] view plain copy
2017-06-19 00:58:01 959
转载 Mac OS X 执行shell以及bash shell的区别
转自:http://blog.csdn.NET/jackalfly/article/details/7571616在shell脚本的第一行中,必须写#!/bin/bash吗?带着这个问题,我今天在百度上搜索了一下,发现在一个贴子中讨论了这个问题,觉得各个跟贴者在回答这个问题时,都解释的很有道理,现摘记如下,以便学习。 ----------------------
2017-06-08 15:07:24 5648
原创 Library not loaded:Reason: image not found 解决
网上下载的demo在模拟器上运行正常,在真机上报:Library not loaded:Reason: image not found。从网上搜方法,试了下都没有效果,按网上的方法又重新组合了下可以了:首先我这出现这个原因是项目直接引用了另一工程。解决方法:1.把Build Phases里 Embed Frameworks里对应的引入项目的frame
2017-04-20 16:10:02 1024
原创 方法返回值retain类型
1 无返回值或返回值不是一个指针对象。2 不retain返回值(不做引用计数处理),如果没有对象引用该返回值,返回值release(以NS_RETURNS_NOT_RETAINED做标识)。3 retain返回值(引用计数+1),用于init、copy家族方法或者标记有NS_RETURNS_RETAINED的方法)4 标记为autorelease,放入一个autoreleasepool中,并且假设
2017-03-28 17:52:30 533
转载 14 个 grep 命令的例子
概述:转自:https://linux.cn/article-5453-1.html所有的类linux系统都会提供一个名为grep(global regular expression print,全局正则表达式输出)的搜索工具。grep命令在对一个或多个文件的内容进行基于模式的搜索的情况下是非常有用的。模式可以是单个字符、多个字符、单个单词、或者是一个句子。
2017-01-19 16:01:33 362
转载 Macho文件浏览器---MachOView
前言:MachOView下载地址:http://sourceforge.net/projects/machoview/MachOView源码地址:https://github.com/gdbinit/MachOViewMach-O格式全称为Mach Object文件格式的缩写,是mac上可执行文件的格式,类似于windows上的PE格式 (Portable Executable )
2017-01-19 11:47:58 4115
原创 用类别添加方法可能存在的问题
类别添加方法实际上是runtime在运行时向类的MethodList里添加了method。如果和原类里方法名相同的话,在通过seleter查找时,会找到后添加的,这样看起来好像是把系统的方法覆盖了,其实不过是在调用的时候先找到的是类别里的方法。同理如果是有多个类别添加了同一方法系统实际上是会按加载顺序向mothodlist里添加了多个相同seleter的mothod,这样也会导致所有的方法
2017-01-13 20:10:41 289
原创 Masonry自动布局label少一行'bug'
一个字符串使用- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(nullable NSDictionaryNSString *,id> *)attributes context:(nullableNSStringDrawingCont
2017-01-10 15:21:28 1197
转载 iOS Crash文件的解析(一)
转自:http://www.cnblogs.com/smileEvday/p/Crash1.html 开发程序的过程中不管我们已经如何小心,总是会在不经意间遇到程序闪退。脑补一下当你在一群人面前自信的拿着你的App做功能预演的时候,流畅的操作被无情地Crash打断。联想起老罗在发布Smartisan OS的时候说了,他准备了10个手机,如果一台有问题,就换一台,如果10台后挂了他就不做手机
2017-01-05 21:55:10 352
原创 正确的设置UIView的frame
UITableviewCell在创建时初始化子view时,根据UITableviewCell的frame或者bounds的宽高来设置子view大小,总是不对,比如:imgView.frame = CGRectMake(0,0,cell.frame.size.height,cell.frame.size.height);最终显示的时候宽高总是(320,44),这是cell在初始化的时候默认的
2016-12-20 14:41:33 2100
转载 UITextField 光标的位置设置获取
转正:http://blog.csdn.net/reylen/article/details/17750523UITextField 光标的位置设置获取通过给UITextField 加一个拓展[objc] view plain copy print?//#import "UITextField+Exte
2016-12-12 20:46:33 677
转载 括号中的可选、必选表示
转自:http://blog.csdn.net/raoqin/article/details/88750891. []:内的内容意思是:可写可不写 例如:/home下就一个list 文件,使用ls --help中的 Usage: ls [OPTION]... [FILE]...2. {}:那就必须要在{}内给出的选择里选一个。3. <>:表示必选在数据库中Transact-SQ
2016-12-08 20:56:17 5479
原创 git 带着修改checkout 到其他分支
正常情况下,如果所在分支有修改想工切换到其他分支就会报错: zhangjie$ git checkout masternerror: Your local changes to the following files would be overwritten by checkout:firstPlease commit your changes or stash them be
2016-12-05 20:59:12 5966
原创 请求“参数”不对bug
调试程序的时候一直有一个请求的参数不对,但是在查看“对应”请求的地方发现没有任何问题,多次确认后还是无问题,很头痛,最终发现是在另一个请求的地方写错了请求地址(实际上是自己封装的和手表通信,请求的一个path,也相当于网络请求的url)参数肯定是不一样的。遇到类似bug的时候,比如真正应该请求的地方是A,在确认A无误后,那么错误肯定就是在其他地方误用了,导致被认为是A的错。
2016-11-16 21:30:56 3401
转载 iOS UI调试神器,插件injection for Xcode使用方法
转自:http://www.cnblogs.com/jys509/p/5439654.html项目越来越大,代码编译时间越来越长,你是不是早已经厌倦了改一点点UI布局就要重新编译一次项目的过程,我们一分钟几百万上下的,怎能被编译浪费掉珍贵的时间。使用injectionforxcode这款插件,提高我们编程时的效率。先上插件的GitHub地址:injectionforxc
2016-11-10 20:04:04 661
原创 NSNotification调用机制
发送NSNotification的时候是同步机制,接受通知的方法执行完成后才会向下运行。示例代码如下:- (void)viewDidLoad { [superviewDidLoad]; [[NSNotificationCenterdefaultCenter] addObserver:selfselector:@selector(logOne)
2016-07-01 12:42:50 270
原创 点播时ffmpeg播放视频当几秒没有收到数据时的处理
1.当30秒左右一个数据包都没收到时,ffmpeg会认为和服务端的链接已经断了,会重新发起一个range请求。益处:当网络不稳定时,可以自动连接上,方便用户。坏处:当服务端的keeplive保持比较长的话,可能会对服务器增加一部分压力。2.当几秒没收到一个数据包后,如果此时去做seek的话,ffmpeg不会响应,会先走到重新发range请求这个任务里,并且会先等到30秒,发起一个接上次
2016-06-23 21:42:09 1408
转载 解决头文件相互包含问题的方法
转自:http://blog.csdn.net/yang_lang/article/details/6767439 所谓超前引用是指一个类型在定义之前就被用来定义变量和声明函数。 一般情况下,C/C++要求所有的类型必须在使用前被定义,但是在一些特殊情况下,这种要求无法满足,例如,在类CMyView中保留了一个非模式对话框对象指针,该对象用
2016-06-15 14:45:16 411
原创 主流ios应用兼容ipv6only测试
苹果要求6月1号前全部支持ipv6only,在5,6月测两次主流应用测试时间:2016.5.24:新闻类:测试的全部新闻类都支持,应该是新闻类都是用的简单http请求,上层接口。im:qq,陌陌都可以,微信不能使用购物支付:淘宝,支付宝不能使用,京东美团正常视频:测试的主流的都不行股票类:同花顺,雪球,东方财富不支持,新浪财经正常使用看出在6月1号前
2016-05-24 15:41:19 720
转载 把m个球放到n个盒子里,有多少种方法 球盒问题,8种情况
一、序言这个“N个球放M盒子问题”是很经典的排列组合了,论坛上也有经典的8种情况的解法。论坛上讨论这8种情况的,我搜索了下(点左边查看搜索结果,还是有很多人在讨论的)看了部分搜索结果,大多都来自下面这个排列组合的牛人。---“军团-云淡”,此人貌似非常喜欢研究排列组合,有点明白了为什么很多人叫他公式帝,因为排列组合很多都是模型,比如:全错位排列(欧拉“装错信封问题”)等等,
2016-05-24 10:54:25 32416 1
转载 NAT64与DNS64基本原理概述
关键词:NAT64、DNS64、IPv6、网络地址与协议转换、IPv6与IPv4互访1.NAT64与DNS64背景在IPv6网络的发展过程中,面临最大的问题应该是IPv6与IPv4的不兼容性,因此无法实现二种不兼容网络之间的互访。为了实现IPv6与IPv4的互访,IETF(互联网
2016-05-20 20:16:39 49388 2
转载 IPV6的地址
转自:http://blog.chinaunix.net/uid-25940826-id-3456540.htmlIPV6的地址类型可分为三大类:1、单播地址2、组播地址3、任意播地址一:单播--Unicast : one to one·单播地址用于一对一的连接·IPv6单播地址有以下六种类型:1-Aggregate Global Unicast A
2016-05-20 18:01:04 1079
转载 神奇的 BlocksKit (二)
转自:http://draveness.me/blockskit-2/关注仓库,及时获得更新:iOS-Source-Code-Analyze这篇文章『神奇的 BlocksKit』的第二部分,关于第一部分的内容在这里:神奇的 BlocksKit(一)神奇的 BlocksKit(二)动态代理动态代理这部分可以说是 BlocksKit 的精华。它使用 block 属性替换
2016-05-09 15:35:53 1087
转载 神奇的 BlocksKit (一)
转自:http://draveness.me/blockskit-1/关注仓库,及时获得更新:iOS-Source-Code-Analyze高能预警:本篇文章非常长,因为 BlocksKit 的实现还是比较复杂和有意的。这篇文章不是为了剖析 iOS 开发中的 block 的实现以及它是如何组成甚至使用的,如果你想通过这篇文章来了解 block 的实现,它并不能帮到你。Blo
2016-05-09 15:32:12 1479
转载 TCP拥塞控制机制
转自:http://blog.sina.com.cn/s/blog_48ebca64010003t0.html 研究TCP的拥塞机制,不仅仅是想了解TCP如何的精巧,更多的是领悟其设计思想,即在一般情况下,我们该怎样处理问题。 一.拥塞的发生与其不可避免 拥塞发生的主要原因在于网络能够提供的资源不足以满足用户的需求,这些资源包括缓存空间、链路带宽容量和中间
2016-04-13 18:18:29 403
转载 跟我一起写 Makefile
转自:http://blog.csdn.net/haoel/article/details/2886 makefile很重要 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HT
2016-03-31 16:05:10 675
转载 iOS调试之 crash log分析
转自:http://www.jianshu.com/p/12a2402b29c2一、crash log的获取当你的app 在手机上crash的时候,会在手机上自动生成一个崩溃日志,也就是我们说的Crash Log。CrashLog的位置位于:iPhone设备的var/mobile/Library/Logs/CrashReporter我们要获取的就是设备中
2016-03-28 14:36:26 655
原创 Android获取多行log方法
调试的时候,如果遇到大量log,经常发现logcat会只显示一定量的log,更早的会被删除掉,为了获得更多的log分析有两种方法:1.在命令行:adb logcat > log.log:是把logcat里的log重定向到log.log文件, 也可以添加上路径,每次运行如果输出文件一样(比如都输出到log.log)会先把上次的内容清理了,再重新写log,但是会把目前logcat里所有的内容都
2016-03-25 18:22:31 737
原创 Android 替换应用内so文件避免每次都要重新打包的麻烦
因工作需要,开发调试每次都要先编译so,再打包apk,然后再装机调试,很麻烦,就想有没有办法直接用新打包的so直接替换apk里的,这样省去了不少麻烦。终算是有两种办法。第一种办法:1.root手机:一般用各种手机助手都可以,一种不行可以换另一种,不同的手机可能需要不同的工具2.修改相关文件夹和文件的权限:正常情况下很多文件都权限不够,为了方便修改的时候可以把涉及到的都修改为77
2016-02-29 21:45:45 10381
转载 Linux文件权限详解 文件和目录权限概述
http://blog.chinaunix.net/uid-25052030-id-174343.html在linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。通过设定权限可以从以下三种访问方式限制访问权限:只允许用户自己访问;允许一个预先指定的用户组中的用户访问;允许系统中的任何用户访问。同时,用户能够控制一个给定的
2016-02-29 16:54:55 337
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人