Char_IEngeneer的专栏

芝兰生于空谷,不以无人而不芳!

AssociatedObject关联对象原理实现

关联对象(AssociatedObject)是Objective-C 2.0运行时的一个特性,允许开发者对已经存在的类在扩展中添加自定义的属性。在实际生产过程中,比较常用的方式是给分类(Category)添加成员变量。 示例: #import <objc/runtime...

2019-02-28 18:04:47

阅读数 34

评论数 0

iOS 底层解析weak的实现原理

          weak表是一个hash(哈希)表,Key是所指对象的地址,Value是weak指针的地址数组。weak是弱引用,所引用对象的计数器不会加一,并在引用对象被释放的时候自动被设置为nil。通常用于解决循环引用问题。weak的原理是什么呢?下面就分析一下weak的工作原理(只是自...

2019-02-27 17:16:48

阅读数 57

评论数 0

算法系列(一)最大子数列问题

最大子数列问题        在计算机科学中,最大子数列问题的目标是在数列的一维方向找到一个连续的子数列,使该子数列的和最大。例如,对一个数列 −2, 1, −3, 4, −1, 2, 1, −5, 4,其连续子数列中和最大的是 4, −1, 2, 1, 其和为6。        该问题最初由...

2016-10-21 15:36:39

阅读数 558

评论数 0

iOS 逆向工具篇(一) class-dump

iOS 正向开发也有一段时间,开发时间越久对 iOS 内部的东西就越好奇,但是又不能通过官方文档资料查到,但是她确确实实存在,这无疑就勾起了我的好奇心。这种情景用《无极》中张柏芝的一句话描述很贴切:你们想看看我这件衣服下面穿的是什么吗?答案是很明显的。那就开始 iOS 逆向之旅吧。 由于大学的嵌...

2016-10-13 15:31:48

阅读数 698

评论数 0

Xcode 7.1项目中Objective-C和swift混合编程(一)

最近项目中使用到了一个图表插件,由于这个图表插件使用swift写的,所以需要在项目中使用到swift语言。 苹果推出swift语言也有一段时间,由于swift1.0中bug太多,一直没在项目中使用。写这篇文章的时间swift已经更新到2.0。所以就决定在项目中使用swift,之后整个项目慢慢向sw...

2015-10-30 20:48:51

阅读数 1733

评论数 0

Reveal UI调试利器,逆向app的实践教程:Reveal别人的 app(一)

这篇教程是Reveal别的app的教程。 想要实现这个目的,我们要具备以下的结果条件: (1)一台已经越狱的iphone (2)OS X系统,同时还需有Reveal.app用于在OS X上运行。 1、如何越狱一部iPhone手机  越狱在网上已经有很多教程,针对不同版本的ios系统,有不同的工具。...

2015-10-16 14:19:06

阅读数 1270

评论数 3

Xcode7 使用cocoapods管理第三方依赖库Nimbus,编译报错,解决办法(二)

新建项目,使用cocoapods管理第三方依赖库。在Podfile中写好,执行pod install,一切都是很顺利的。 紧接着build项目时出现错误,错误如图所示: 遇到这样的问题也不必惊慌,主要原因是该类库使用objc_msgSend和IMP发生冲突,只要在将下图的位置设置为NO即可:

2015-10-10 14:06:14

阅读数 482

评论数 0

Xcode 7 打包上传app,兼容iOS9,遇到的坑(一) 问题:UIApplication.m:3294

楼主是在十一前提交最新版本的app到AppStore。假期归来满心欢喜以为上架了,于是打开iTunes Connect,打开一看,被拒绝了。尼玛,这是第二次被拒绝了。     楼主不敢轻易提交代码了,就认真的把代码review一遍,也没发现什么问题。打开崩溃日志发现如下错误报告: *** Asse...

2015-10-08 12:31:35

阅读数 1058

评论数 0

使用xCode6.4集成xmpp的那些坑!!!

http://blog.sina.com.cn/s/blog_5fb39f910101akyo.html http://www.tuicool.com/articles/nqyy2u7

2015-09-21 21:42:12

阅读数 544

评论数 0

数据结构——排序算法总结

排序(Sorting)就是将一组对象按照规定的次序重新排列的过程,排序往往是为检索而服务的,它是数据处理中一种很重要也很常用的运算。例如我们日常学习中的查字典或者书籍的目录,这些都事先为我们排好序,因此大大降低了我们的检索时间,提高工作效率。   排序可分为两大类:   内部排序(Intern...

2014-10-15 17:52:39

阅读数 471

评论数 0

GitHub托管代码

本篇博客针对不会Git的小童鞋,大神们可以绕过,错误之处谢谢指正; 关于GitHub的强大此处不在说明,知道GitHub也有一段时间了,但是一直苦于不会使用。 本篇文章介绍的是如何将工程代码托管到上面;如果你还没注册GitHub账号请到https://github.com/上注册 ...

2014-10-15 13:38:28

阅读数 288

评论数 0

iOS开发:加载、滑动翻阅大量图片解决方案

常规思路流程 点击任意小图后: 1.首先制作scrollview框架:大小2个scrollview,小的用于手势缩放单一图片,大的横向依次加载全部照片 2.制作好scrollview框架后,加载照片 3.一切准备就绪跳转页面呈现给用户选择的大图 加载图片这一步,若相册...

2014-10-15 13:02:33

阅读数 502

评论数 0

IOS 开发中判断字符串是否为空字符的方法

- (BOOL) isBlankString:(NSString *)string {     if (string == nil || string == NULL) {         return YES;     }     if ([string isKindOfClass:[N...

2014-10-15 13:00:25

阅读数 309

评论数 0

iOS 17个常用代码整理

12.判断邮箱格式是否正确的代码:   //利用正则表达式验证   -(BOOL)isValidateEmail:(NSString *)email   {       NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-...

2014-10-15 12:53:04

阅读数 310

评论数 0

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,libstd...

2013-12-03 16:34:40

阅读数 520

评论数 0

静态数据成员和静态成员函数理解

1、静态数据成员 静态数据成员其特殊点在于它以关键字static开头。静态数据成员我们也可以叫它共享数据,原因在于一旦我们在一个类中定义了一个或多个静态数据成员,即使我们不创建对象也可以引用这些数据成员。如果只声明了类而没有定义对象,类中的一般数据成员是不占内存空间的。需要注意的是:静态数据成员不...

2013-12-02 21:54:56

阅读数 407

评论数 0

【转】SecureCRT常用设置

SecureCRT是最常用的终端仿真程序,简单的说就是windows下登录UNIX或Liunx服务器主机的软件。 传统的网络服务程序,如:ftp和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而通过使用SSH客户端与服务器端...

2013-12-02 15:34:17

阅读数 409

评论数 0

C++中对象的常引用实例分析

我们知道一个变量的引用就是变量的别名。实质上变量名和引用名都是指向同一段内存单元。如果形参为变量的引用名,实参为变量名,那么在调用函数时,并不是为形参开辟了一个存储空间(常称为建立一个实参的拷贝),而是把实参变量的地址传给形参(引用名),这样引用名也指向了实参变量。 实例: #include us...

2013-12-02 15:34:14

阅读数 446

评论数 0

指向对象的常指针和指向常对象的指…

1、指向对象的常指针      把指向对象的指针变量声明为const型并将之初始化,这样指针始终保持为初值,不能改变,也就是说它的指向始终不会改变。      定义指向对象常指针格式:  类名  * const 指针变量名 = &对象名(对象地址);      例如:Person p(&...

2013-12-02 15:34:12

阅读数 472

评论数 0

C++中的常对象、常数据成员和常成…

1、常对象 在定义对象是=时,我们可以将对象定义为常对象。常对象中的数据成员为常变量且必须要有初值。例如:Person const p('M')。一旦声明可常对象那么常对象中的所有数据成员的值都不能被修改。所以希望保证数据成员的不被改变的对象,我们都可将其声明为常对象。 定义常对象的格式:类名 c...

2013-12-02 15:34:10

阅读数 427

评论数 0

提示
确定要删除当前文章?
取消 删除