0%

有时候使用SDWebImage对UIImageView的扩展时候会有需要同时缓存图片的需求,这两个扩展对UIImageView和UIImage进行扩展,使用UIImageView.sd_setImageAndCached(with urlString: String, placeholderImage: UIImage? = nil) 可以做到缓存,并且下载图片的operation对应的key与SDWebImage对应的key相同,不会引起冲突。
阅读全文 »

此文主要针对IOS应用, 是屏幕旋转相关问题的一个总结。 主要内容有:iOS4,5,6-9,10+不同版的适配;强制旋转和自动旋转;个别屏幕可以旋转,其他屏幕不能旋转;以及最终的实现方式。
阅读全文 »

本来 写了一篇《iOS 如何做才安全–逆向工程 - Reveal、IDA、Hopper、https抓包 等》,发现文章有点杂,并且“iOS 如何做才安全”这部分写的越来越多,觉得 分出来更清晰一点。所以拆成两部分。 同时也是为了大家能 共同讨论,毕竟不是专业搞安全的,如果文中有错误 欢迎指正,共同进步。

iOS应用的安全性 常常被大家忽视。

iOS 如何做才安全?


1、首先,我们可以通过iTunes 下载 AppStore的ipa文件(苹果 把开发者上传的ipa包 进行了加壳再放到AppStore中),所以我们从AppStore下载的ipa都是加壳的,所以不能直接用来反编译。

阅读全文 »

iOS应用的安全性 常常被大家忽视。

iOS 如何做才安全

详见《iOS如何做才安全》

ipa文件

  • AppStore里的ipa包 可以通过 iTunes 下载到电脑。iOS8.3以下系统的非越狱的手机上,可以用MAC上的PP助手等软件,直接把手机上的ipa文件(包含沙盒里的存储文件)拷贝到电脑。

如果是越狱手机,都可以用PP助手、itools直接把ipa导出到电脑,并且可以用PP助手、iExplorer、itools这些工具 查看 iOS的系统目录。

阅读全文 »

在iOS4出来后,苹果公司在OC中推出了block机制(也许更早就有了)。并且在后续的版本中大量的推广和使用了这项技术,比如对视图动画API的改版,比如GCD技术等等。block技术并不是什么新技术,他的本质就是闭包功能在iOS上的实现而已。而闭包功能在其他很多语言中都有实现,比如JAVA中接口的匿名实现。用闭包可以解决那些执行逻辑和上下文环境解耦的场景,如果从设计模式的角度来考虑的话闭包就是一种策略模式(Strategy)的实现。

阅读全文 »

先看一下Block使用的语法

声明一个block

1
2
返回值 (^名称)(参数列表) = ^(参数列表){
};
1
2
3
4
int (^name)(int ,int) = ^(int a,int b){

return (a+b);
};

作为一个函数的参数:

1
2
3
4
5
6
7
8
- (void)testBlock:(NSString *(返回类型) (^)(int a))s(block名字) {
NSString *a = s(1);
}

[self testBlock:^NSString *(int a) {
a = 5;
return @"1";
}];
阅读全文 »

相关概念

在这篇笔记开始之前,我们需要对以下概念有所了解。

操作系统中的栈和堆

注:这里所说的堆和栈与数据结构中的堆和栈不是一回事。

我们先来看看一个由C/C++/ObjC编译的程序占用内存分布的结构:

memory

  • 栈区(stack):由系统自动分配,一般存放函数参数值、局部变量的值等。由编译器自动创建与释放。其操作方式类似于数据结构中的栈,即后进先出、先进后出的原则。

例如:在函数中申明一个局部变量int b;系统自动在栈中为b开辟空间。

阅读全文 »

  • typedef的block

  • 作为属性的block

attribute

  • 作为变量的block

variable

  • 作为方法变量入参的block

in_variable_parameter

  • 作为方法参数的block

in_parameter

  • 无名block

no_name

  • 内联函数的block

in_func

  • 递归调用的block

recursive

  • 作为方法返回值的block

func_out

  • 作为函数名的block(太过奇葩,完全不知道怎么用-_-!)

func_name


原文

关于 iOS 架构的文章感觉已经泛滥了,前一阵正好 Android 官方推了一套 App Architecture ,于是就在想,对于 iOS 来说,怎样的架构才是最适合的。带着这个问题,我开始了探索。

Why Architecture Matters?

这是第一个也是最重要的问题,为什么会出现各种 Architecture Pattern?真的那么重要么?

我们来想一下,无论是做一个 App 还是搭一套后台系统,如果是一次性的,今天用完明天就可以扔掉,那么怎么快怎么来,代码重复、代码逻辑、代码格式统统不重要。

阅读全文 »