- 博客(26)
- 资源 (21)
- 收藏
- 关注
原创 AssociatedObject关联对象原理实现
关联对象(AssociatedObject)是Objective-C 2.0运行时的一个特性,允许开发者对已经存在的类在扩展中添加自定义的属性。在实际生产过程中,比较常用的方式是给分类(Category)添加成员变量。示例:#import <objc/runtime.h>@interface NSObject (AssociatedObject)@property (...
2019-02-28 18:04:47
748
原创 iOS 底层解析weak的实现原理
weak表是一个hash(哈希)表,Key是所指对象的地址,Value是weak指针的地址数组。weak是弱引用,所引用对象的计数器不会加一,并在引用对象被释放的时候自动被设置为nil。通常用于解决循环引用问题。weak的原理是什么呢?下面就分析一下weak的工作原理(只是自己对这个问题好奇,学习过程中的笔记,希望对读者也有所帮助)。 weak 实现原理的概括 ...
2019-02-27 17:16:48
442
原创 算法系列(一)最大子数列问题
最大子数列问题 在计算机科学中,最大子数列问题的目标是在数列的一维方向找到一个连续的子数列,使该子数列的和最大。例如,对一个数列 −2, 1, −3, 4, −1, 2, 1, −5, 4,其连续子数列中和最大的是 4, −1, 2, 1, 其和为6。 该问题最初由布朗大学的Ulf Grenander教授于1977年提出,当初他为了展示数字图像中一个简单的最大然似然
2016-10-21 15:36:39
1148
原创 iOS 逆向工具篇(一) class-dump
iOS 正向开发也有一段时间,开发时间越久对 iOS 内部的东西就越好奇,但是又不能通过官方文档资料查到,但是她确确实实存在,这无疑就勾起了我的好奇心。这种情景用《无极》中张柏芝的一句话描述很贴切:你们想看看我这件衣服下面穿的是什么吗?答案是很明显的。那就开始 iOS 逆向之旅吧。由于大学的嵌入式知识还没有还给老师,有些新东西还是很容易接受的。记录下在这条路上的每一步吧。放下浮躁的内心
2016-10-13 15:31:48
1500
原创 Xcode 7.1项目中Objective-C和swift混合编程(一)
最近项目中使用到了一个图表插件,由于这个图表插件使用swift写的,所以需要在项目中使用到swift语言。苹果推出swift语言也有一段时间,由于swift1.0中bug太多,一直没在项目中使用。写这篇文章的时间swift已经更新到2.0。所以就决定在项目中使用swift,之后整个项目慢慢向swift过度。写了这篇文章,当做学习笔记吧,为有这样打算的开发人员提供一个思路。废话不多说,下面开
2015-10-30 20:48:51
2240
原创 Reveal UI调试利器,逆向app的实践教程:Reveal别人的 app(一)
这篇教程是Reveal别的app的教程。想要实现这个目的,我们要具备以下的结果条件:(1)一台已经越狱的iphone(2)OS X系统,同时还需有Reveal.app用于在OS X上运行。1、如何越狱一部iPhone手机 越狱在网上已经有很多教程,针对不同版本的ios系统,有不同的工具。由于大部分人已经升级iOS9,下面的链接就是针对不同的iOS系统进行越狱的教程。
2015-10-16 14:19:06
1758
2
原创 Xcode7 使用cocoapods管理第三方依赖库Nimbus,编译报错,解决办法(二)
新建项目,使用cocoapods管理第三方依赖库。在Podfile中写好,执行pod install,一切都是很顺利的。紧接着build项目时出现错误,错误如图所示:遇到这样的问题也不必惊慌,主要原因是该类库使用objc_msgSend和IMP发生冲突,只要在将下图的位置设置为NO即可:
2015-10-10 14:06:14
725
原创 Xcode 7 打包上传app,兼容iOS9,遇到的坑(一) 问题:UIApplication.m:3294
楼主是在十一前提交最新版本的app到AppStore。假期归来满心欢喜以为上架了,于是打开iTunes Connect,打开一看,被拒绝了。尼玛,这是第二次被拒绝了。 楼主不敢轻易提交代码了,就认真的把代码review一遍,也没发现什么问题。打开崩溃日志发现如下错误报告:*** Assertion failure in -[UIApplication _runWithMainScen
2015-10-08 12:31:35
1426
原创 使用xCode6.4集成xmpp的那些坑!!!
http://blog.sina.com.cn/s/blog_5fb39f910101akyo.htmlhttp://www.tuicool.com/articles/nqyy2u7
2015-09-21 21:42:12
751
转载 数据结构——排序算法总结
排序(Sorting)就是将一组对象按照规定的次序重新排列的过程,排序往往是为检索而服务的,它是数据处理中一种很重要也很常用的运算。例如我们日常学习中的查字典或者书籍的目录,这些都事先为我们排好序,因此大大降低了我们的检索时间,提高工作效率。 排序可分为两大类: 内部排序(Internal Sorting):待排序的记录全部存放在计算机内存中进行的排序过程; 外部排序(Exter
2014-10-15 17:52:39
618
转载 GitHub托管代码
本篇博客针对不会Git的小童鞋,大神们可以绕过,错误之处谢谢指正;关于GitHub的强大此处不在说明,知道GitHub也有一段时间了,但是一直苦于不会使用。本篇文章介绍的是如何将工程代码托管到上面;如果你还没注册GitHub账号请到https://github.com/上注册如果你已经注册GitHub账号,在你的电脑上安装了GitHub,而一直还没上传过代码
2014-10-15 13:38:28
489
转载 iOS开发:加载、滑动翻阅大量图片解决方案
常规思路流程点击任意小图后:1.首先制作scrollview框架:大小2个scrollview,小的用于手势缩放单一图片,大的横向依次加载全部照片2.制作好scrollview框架后,加载照片3.一切准备就绪跳转页面呈现给用户选择的大图加载图片这一步,若相册内就10几张照片,那么毫无技术挑战,但是如果是300张照片呢?直接崩溃?还是让用户等待加载? 时间紧任
2014-10-15 13:02:33
730
转载 IOS 开发中判断字符串是否为空字符的方法
- (BOOL) isBlankString:(NSString *)string { if (string == nil || string == NULL) { return YES; } if ([string isKindOfClass:[NSNull class]]) { return YES; } i
2014-10-15 13:00:25
841
转载 iOS 17个常用代码整理
12.判断邮箱格式是否正确的代码: //利用正则表达式验证 -(BOOL)isValidateEmail:(NSString *)email { NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; NSPredicate *emailTest = [NS
2014-10-15 12:53:04
488
转载 CentOS 6.4 编译安装 gcc 4.8.1
CentOS 6.4 编译安装 gcc 4.8.1今天在isocpp上看到“GCC 4.8.1 released, C++11 feature complete”这个消息,非常兴奋。终于有一个全面支持C++11语言特性的编译器了!当然了,gcc仅仅是语言特性上全面支持C++11,libstdc++貌似还没有完全跟上,不过我已经挺满足了,至少可以去尝试各种特性了。另外,之前也有消息说Cl
2013-12-03 16:34:40
678
原创 静态数据成员和静态成员函数理解
1、静态数据成员静态数据成员其特殊点在于它以关键字static开头。静态数据成员我们也可以叫它共享数据,原因在于一旦我们在一个类中定义了一个或多个静态数据成员,即使我们不创建对象也可以引用这些数据成员。如果只声明了类而没有定义对象,类中的一般数据成员是不占内存空间的。需要注意的是:静态数据成员不属于某一个对象,不会占用某一个对象的内存空间。所有的对象,都可以引用这些静态数据成员。静态数据成
2013-12-02 21:54:56
801
原创 【转】SecureCRT常用设置
SecureCRT是最常用的终端仿真程序,简单的说就是windows下登录UNIX或Liunx服务器主机的软件。传统的网络服务程序,如:ftp和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而通过使用SSH客户端与服务器端通讯时,用户名及口令均进行了加密,有效防止了对口令的窃听。同时通过SSH的数据传输是经过压缩的,所以可
2013-12-02 15:34:17
1331
原创 C++中对象的常引用实例分析
我们知道一个变量的引用就是变量的别名。实质上变量名和引用名都是指向同一段内存单元。如果形参为变量的引用名,实参为变量名,那么在调用函数时,并不是为形参开辟了一个存储空间(常称为建立一个实参的拷贝),而是把实参变量的地址传给形参(引用名),这样引用名也指向了实参变量。实例:#includeusing namespace std;class Person{ public:
2013-12-02 15:34:14
765
原创 指向对象的常指针和指向常对象的指…
1、指向对象的常指针 把指向对象的指针变量声明为const型并将之初始化,这样指针始终保持为初值,不能改变,也就是说它的指向始终不会改变。 定义指向对象常指针格式: 类名 * const 指针变量名 = &对象名(对象地址); 例如:Person p("zhangsan",20),p2; //定义对象 Person * const p3 =&p;
2013-12-02 15:34:12
1399
原创 C++中的常对象、常数据成员和常成…
1、常对象在定义对象是=时,我们可以将对象定义为常对象。常对象中的数据成员为常变量且必须要有初值。例如:Person constp('M')。一旦声明可常对象那么常对象中的所有数据成员的值都不能被修改。所以希望保证数据成员的不被改变的对象,我们都可将其声明为常对象。定义常对象的格式:类名 const 对象名(实参列表){} 或const 类名 对象名(实参列表){}需要注意的是:一个对
2013-12-02 15:34:10
1509
原创 C++中的析构函数和构造函数
析构函数(destructor)是一个特殊的成员函数。析构函数的定义:~类名(){}执行时期:当对象的生命周期结束时就会自动执行析构函数。具体情况如下:1、如果在一个函数中定义了一个对象(局部对象),当这个函数被调用,且执行结束时,对象应该释放,也就是在释放对象前调用析构函数。2、static局部对象在函数调用结束时并不释放对象,因此这是并不执行析构函数,在main函数执行结束或调用
2013-12-02 15:34:08
632
原创 C++中函数重载和函数模板的理解
函数重载 函数重载的判断标识是它的函数参数列表,不是返回值来判断的。类似这样的:int demo(int i,doubled); doubledemo(int i,double d); 在编译时就会报错。因为这里不牵涉到函数重载。函数模板 例如:template T Max(T&num1,T &num2) {return
2013-12-02 15:34:06
520
原创 C++流格式控制符的使用
1.流格式控制符定义在头文件中,setw(n) 指定打印字段的宽度setprecision(n) 设置一个浮点数的精度fixed 将一个浮点数以
2013-12-02 15:34:04
1247
原创 Linux下编译C++
Linux下 编译C++在编译之前我们需要在系统里安装G++GCC,它们就是Linux下的C++/C的编译器。代码如下代码:sudo apt-get installbuild-essentialsudo apt-get install gccsudo apt-get install g++好,现在我们在文本编辑器里写一个C的简单的程序(好像所有学习C或者C++的书都会出现)
2013-12-02 15:34:01
472
原创 Linux下关闭防火墙
一.Linux下开启/关闭防火墙命令1) 永久性生效,重启后不会复原开启: chkconfig iptables on关闭: chkconfig iptables off2) 即时生效,重启后复原开启: service iptables start关闭: service iptables stop需要说明的是对于Linux下的其它服务都可以用以上命令执行开启和关闭
2013-12-02 15:33:59
445
原创 Linux下命令(删除,解压)
1、linux删除用户方式linux下删除用户通常有两种方式,一种是使用命令行,另一种是手动删除。命令行操作命令格式:userdel username#删除zhangshanuserdel zhangsan#删除zhangsan用户,并删除其相应的宿主目录userdel -r zhangshan手工删除1. 删除用户在 /etc/passwd、/etc/shadow文件下的行
2013-12-02 15:33:52
1499
PaintCode.for.Sketch 1.1
2017-04-19
SSO CAS 单点登录实例SSOAuth+SSOWebDemo1+SSOWebDemo 免积分下载
2015-09-18
CAS服务端和客户端源代码
2015-09-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人