自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 收藏
  • 关注

原创 iOS模仿系统相机拍照你不曾注意过的细节

距离上次写博客竟然过了一个月了,一方面是最近项目比较忙,另一方面是实在是有点儿懈怠了,强烈谴责一下自己。其实我最近在看一些技术书籍,发现一些好的书真心对自己帮助很大,看书的过程,好多原来模糊的概念、问题,都能感觉恍然大悟。当提笔想总结成一篇文章的时候,发现网上早已经有大量的优秀文章出现,所以就不敢献丑了。今天写的一篇文章,是最近自己项目中用到的,不算什么难点,只是感觉有必要记录一下。需...

2018-07-01 17:45:46 1825

原创 iOS逆向-ipa包重签名及非越狱手机安装多个微信

前一段时间学了点儿逆向相关的一些东西,但是都是基于越狱手机上的操作,给视频类应用去广告之类的。随着苹果生态圈的逐渐完善、及苹果对自身系统的保护越来越严格,导致现在的iPhone手机并不像以前那样存在大量的越狱用户。前段时间我自己申请了个微信小号,申请小号的目的就是原来微信号好友中乱七八糟的人实在太多,感觉自己的朋友圈都是一些无关紧要的垃圾信息,曾经关闭了一段时间的朋友圈,但是最近遇到了...

2018-05-29 23:26:04 6738

原创 KVO详解及底层实现

什么是KVO??KVO就是NSKeyValueObserving,请看官方文档的解释:大概翻译如下:一种非正式协议,通知其他对象的指定属性发生了改变。简单理解就是,可以监听一个对象的某个属性是否发生改变。那么问题来了,什么是非正式协议??有正式协议吗??麻蛋,本来想找官方文档的,找了半天没找到。从Stackoverflow找到了答案,貌似原来官方文档的链接失效了...

2018-05-20 23:06:53 542

原创 fastlane实现自动化打包

正常产品开发完成之后,我们都需要给测试人员打包,又是测试包,又是生产包的,打一次包需要浪费十几分钟的时间,甚至有时候,你刚打完包,产品过来告诉你某个地方需要微调一下(麻蛋,这个时候是不是想弄死他),但是没办法,只好改完bug,继续打包,就这样可能一上午或者一下午就这样浪费了,所以有一个能够自动化打包的工具不仅能够为我们节省大量的时间,还可以让我们能够装逼。。。。。(这是重点)其实自动化...

2018-04-26 16:30:57 752

原创 Quartz2D实战-画板工具

一直想让自己每天都能进步,但是学习这个事情一直都无法坚持,只有自己感觉到了紧迫感,才会敲起代码,研究自己以前没接触过的知识,写博客的目的就是希望能够和更多的朋友一起讨论,促进交流,共同进步!!!什么是Quartz2DQuartz2D的API是纯C语言的,它是一个二维绘图引擎,同时支持iOS和Mac系统。Quartz2D的API来自于Core Graphics框架,数据类型和函数基本...

2018-04-21 13:19:24 225

原创 (4)OC中消息和消息转发-02

上篇文章讲到,如果通过_class_resolveInstanceMethod和- (id)forwardingTargetForSelector:(SEL)aSelector还是没找到IMP,也就是方法的实现,那我们只能手动添加方法的实现,也就是上篇文章提到的regular forwarding或者Normal Forwarding:我们先看一下方法的调用过程都执行了哪些方法?首先我们把方法...

2018-03-28 18:52:35 190

原创 (3)OC中消息和消息转发-01

欢迎访问我的个人博客前一段时间有朋友问了下面的这个问题,我给出的回答是这样的:其实上面回答的方法调用也都是基于以前对runtime的理解,和自己试验出来的结果,但是,回答完这个问题之后,抱着探究到底的精神(其实是这几天产品没提什么需求,有点儿闲),问了自己一个问题:你怎么知道是底层调用的是这几个方法??。。。又是一番查资料,验证问题。。。下面正式开始分析:首先新建一个Pe...

2018-03-26 18:13:21 222

原创 (2)NSNumber及Tagged Pointer

欢迎访问我的个人博客根据上一篇文章的总结,我们很容易发现@interface Student : NSObject{ @public int _age; int _no;}一个Student对象在64位架构下占了16个字节,其中isa占8个字节,两个int变量分别占了4个字节,但是这种方式适合所有OC对象吗??哈哈,并不是。。。今天早上有朋友问N...

2018-03-22 18:51:15 304

原创 (1)Objective-C的本质

欢迎访问我的个人博客众说周知,我们平时编写的OC代码,底层都是C/C++实现的我们可以通过一个终端指令,将我们的OCdiamante转换成C/C++代码xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc 文件名 -o 输出的CPP文件例如:xcrun -sdk iphoneos clang -arch arm6...

2018-03-19 17:48:48 2322

原创 (7)theos安装

安装签名工具ldid先确保安装了brew$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"利用brew安装ldid$ brew install ldid修改环境变量编辑用户的配置文件$ vim

2018-02-02 00:15:41 512

原创 (6)脱壳

加壳什么是加壳? 利用特殊的算法,对可执行文件的编码进行改变(比如压缩、加密),以达到保护程序代码的目的脱壳什么是脱壳? 摘掉壳程序,将未加密的可执行文件还原出来(有些人也称为“砸壳”)脱壳主要有2种方法:硬脱壳、动态脱壳iOS中的脱壳工具iOS中有很多好用的脱壳工具 Clutch:https://github.com/KJCracks/C

2018-02-02 00:14:46 419

原创 (5)初识Mach-O

APP从开发到安装到手机的过程1MJRefreshExample.app中的MJRefreshExample文件是iOS中的可执行文件,文件格式是Mach-OAPP从开发到安装到手机的过程2逆向APP的思路界面分析 Cycript、Reveal代码分析 对Mach-O文件的静态分析MachOView、class-dump、Hopper Disassem

2018-02-02 00:13:47 600

原创 (4)Reveal真机调试

Reveal是一款调试iOS程序UI界面的神器官网:https://revealapp.com下载:https://revealapp.com/download/建议下载至少Reveal4版本,支持USB连接调试,速度快。低版本的只能WiFi连接调试调试环境配置iPhone上安装Reveal Loader安装完Reveal Loader后,打开【设置】,选择需要调试的APP

2018-02-02 00:12:48 747

原创 (3)Cycript

什么是CycriptCycript是Objective-C++、ES6(JavaScript)、Java等语法的混合物可以用来探索、修改、调试正在运行的Mac\iOS APP官网: http://www.cycript.org/文档: http://www.cycript.org/manual/通过Cydia安装Cycript,即可在iPhone上调试运行中的APPC

2018-01-23 17:33:39 513

原创 (2)逆向环境搭建

Mac远程登录到iPhone我们经常在Mac的终端上,通过敲一些命令行来完成一些操作iOS和Mac OS X都是基于Darwin(苹果的一个基于Unix的开源系统内核),所以iOS中同样支持终端的命令行操作在逆向工程中,我们经常会通过命令行来操纵iPhone为了能够让Mac终端中的命令行能作用在iPhone上,我们得让Mac和iPhone建立连接通过Mac远程登录到iPho

2018-01-21 14:21:38 686

原创 (1)越狱环境搭建

什么是iOS Jailbreak(iOS越狱)利用iOS系统漏洞,获取iOS系统的最高权限(Root),解开各种限制(合法行为)Jailbreak优缺点:优点自由安装各种实用的插件、主题、APP修改系统APP的一些默认行为自由安装非AppSore来源的APP灵活管理文件系统,让iPhone可以像U盘那样灵活给开发者提供了逆向工程的环境缺点不予保修费电,越狱

2018-01-21 00:06:29 422

原创 OC和Swift互相跳转

欢迎访问我的个人博客首先在需要引入Swift的文件中导入头文件#import "工程名-Swift.h"OC跳转Swift页面:#import "ViewController.h"#import "OCAndSwift-Swift.h" // 引入头文件@interface ViewController ()@end@implementation ViewController-

2017-12-09 18:44:49 1931

原创 iOS保存联系人到系统通讯录

欢迎访问我的个人博客1、首先判断当前通讯录是否存在这个联系人// 判断通讯录是否存在某个联系人+ (BOOL)isExistContactNameByName:(NSString *)contactName{ ABAddressBookRef addBook = nil; __block BOOL isExist = NO; CFErrorRef error = nil;

2017-11-13 16:32:33 1859

原创 iOS友盟错误分析定位

欢迎放我我的个人博客进入友盟后台点击:错误分析->错误列表 看到如下:点击一个进入详情,看到如下:打开Xcode->Windows->Organizer->archivers选择你要查看的错误报告所在的版本,这个一定要选对!!!显示包内容找到dSYMs和Products下的Applications下的文件,并将它们拷贝到一个文件夹下打开终端cd到刚才新建的文件夹(错误报告)的目录下,输入如下

2017-11-10 17:47:17 323

原创 ReactNative-综合案例(03)

最近几天学了几个ReactNative组件,总觉得单纯的学几个组件进步慢,所以我打算做一些综合性的小案例,练习下实战,我从网上找到一个小案例 ,感觉挺好,也学习了很多,代码内容可能不太一样,主要区别是:我把RN官方不推荐或者已经放弃了的组件进行了替换,如果有需要的可以互相参考下接着上篇案例开始写,这篇文章将会讲解如何怎样利用WebView加载HTML文件。在WYNewsDetail.js文件

2017-08-22 21:01:40 307

原创 ReactNative-综合案例(02)

最近几天学了几个ReactNative组件,总觉得单纯的学几个组件进步慢,所以我打算做一些综合性的小案例,练习下实战,我从网上找到一个小案例 ,感觉挺好,也学习了很多,代码内容可能不太一样,主要区别是:我把RN官方不推荐或者已经放弃了的组件进行了替换,如果有需要的可以互相参考下接着上篇案例开始写,这篇文章将会讲解如何编写轮播图和列表首先WYHome.js代码如下:import React,

2017-08-22 21:00:55 314

原创 ReactNative-常用命令

最近开发的时候发现一些常用的命令总是记不住,用到的时候又要Google,感觉好麻烦,整理一下常用的一些命令创建项目react-native init WYNews但是最近发现初始化完毕之后,运行项目会报错Print: Entry, ":CFBundleIdentifier", Does Not Exist 暂时解决方案是指定ReactNative版本:react-native init WY

2017-08-22 20:59:16 1275

原创 ReactNative-综合案例(01)

最近几天学了几个ReactNative组件,总觉得单纯的学几个组件进步慢,所以我打算做一些综合性的小案例,练习下实战,我从网上找到一个小案例 ,感觉挺好,也学习了很多,代码内容可能不太一样,主要区别是:我把RN官方不推荐或者已经放弃了的组件进行了替换,如果有需要的可以互相参考下建完一个工程之后,首先建一个WYMain.js文件,代码如下:首先安装所需组件:npm install --save

2017-08-22 20:58:14 561

原创 ReactNative-底部TabBar react-native-tab-navigator

首先需要安装 react-native-tab-navigatornpm install react-native-tab-navigator –save导入组件import TabNavigator from 'react-native-tab-navigator'详细代码如下:import React, { Component } from 'react';import { AppRegi

2017-08-22 20:55:06 679

原创 react-navigation的使用

react-navigation分为三个部分StackNavigator类似顶部导航条,用来跳转页面和传递参数。TabNavigator 类似底部标签栏,用来区分模块。DrawerNavigator 抽屉,类似从App左侧滑出一个页面,具体我没有使用过,在这里不做讲解。TabNavigator的基本用法const TabNav = TabNavigator( { MainTab:

2017-08-11 16:01:06 282

原创 ReactNative-ListView

这只是一个简单的listView的小demo欢迎访问我的个人博客初始化项目之后,index.ios.js代码如下/** * Sample React Native App * https://github.com/facebook/react-native * @flow */import React, { Component } from 'react';import { AppRe

2017-08-11 15:58:55 210

原创 iOS自动打开闪光灯

// 1.获取硬件设备 AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; // 2.创建输入流 AVCaptureDeviceInput *input = [[AVCaptureDeviceInput alloc]initWithDevice:devi

2017-07-21 16:03:00 840

原创 iOS UILabel设置中划线不能包含中文

今天写代码突然发现给UILabel设置中划线失效了,纠结了好久,终于找到解决办法(有可能是iOS10.3的bug,别的系统没事),解决办法,只需添加一个富文本属性即可: NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc] initWithString:@"15.0元"]; [att

2017-06-27 14:48:38 266

转载 iOS多线程技术方案

多线程技术方案转载自目录一、多线程简介1、多线程的由来2、耗时操作的模拟试验3、进程和线程4、多线程的概念及原理5、多线程的优缺点和一个Tip6、主线程7、技术方案二、Pthread1、函数2、参数和返回值3、使用三、NSThread1、创建一个新的线程2、线程的状态 3、线程的

2017-06-19 11:41:12 332

原创 iOS-URLEncode和URLDecode

// urlencode- (NSString *)urlEncodedString { NSString *encodedString = (NSString *) CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,

2017-06-05 10:43:36 1520

转载 iOS应用程序内购/内付费

iOS应用程序内购/内付费(一)标签: IOS内付费AppStoreStoreKitStoreKit.hItunesConnect2015-01-15 15:25 91583人阅读 评论(64) 收藏 举报 分类:IOS开发(53) 版权声明:本文为博主原创文章,未经博主允许不得转载。很久之前就想出一篇iOS内付费的教程,但是

2017-06-01 18:56:44 425

原创 iOS广告启动页

产品需求:启动页逻辑: 上部分为广告区域,可在运营后台配置图片+跳转页(同No.2);首次开 APP,则请求一次配置,失败或无配置则不显示,一旦有网了即刻请求一次并 做好缓存; 客户端每4小时请求一次;每两小时显示一次广告页内容 用户点击则跳转已配置页面;启动页上有5s倒计时,时间到了启动页关闭,也 可手动点击跳过启动页,广告已过期也不显示。服务端返回模型: { “image” : “h

2017-05-26 16:49:35 894

原创 TTTAttributedLabel高亮显示手机号码、网址

1、初始化label- (TTTAttributedLabel *)traceLabel{ if (_traceLabel == nil) { _traceLabel = [TTTAttributedLabel new]; [_traceLabel setTextAlignment:NSTextAlignmentLeft]; // NSTextC

2017-05-12 18:09:58 1174

原创 iOS打开闪光灯

// 闪光灯 UIButton *torchBtn = [UIButton buttonWithType:UIButtonTypeCustom]; [torchBtn setView_size:SS_ADAPT_SCALE_FLOAT_SIZE_6P(65, 65, 85, 85)]; [torchBtn setBackgroundImage:[UIImage imageNa

2017-04-10 11:00:05 788

原创 iOS系统生成二维码

// 1. 创建一个二维码滤镜实例(CIFilter) CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"]; // 滤镜恢复默认设置 [filter setDefaults]; // 2. 给滤镜添加数据 NSString *string = @"594589850445580904

2017-03-27 15:59:34 384

原创 NSURLSession内存泄漏

检查代码是否有leak的时候,发现NSURLSession存在leak,最后发现必须session请求完成后,立即释放,代码如下:- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error{ [session finishTasks

2017-02-09 15:08:28 1786

原创 WKWebView 白屏问题

1、WKWebView 自诩拥有更快的加载速度,更低的内存占用,但实际上 WKWebView 是一个多进程组件,Network Loading 以及 UI Rendering 在其它进程中执行。初次适配 WKWebView 的时候,我们也惊讶于打开 WKWebView 后,App 进程内存消耗反而大幅下降,但是仔细观察会发现,Other Process 的内存占用会增加。在一些用 webGL 渲染的

2017-01-20 16:43:57 16490 7

原创 iOS动画-定时对UIView进行翻转和抖动

[NSTimer scheduledTimerWithTimeInterval:3.f repeats:YES block:^(NSTimer * _Nonnull timer) { CABasicAnimation* rotationAnimation = [CABasicAnimation animation];; rotationAnimatio

2016-12-22 17:08:59 489

原创 CocoaPods升级

前提是你以前已经安装过CocoaPods 1、查看当前pod版本pod --version2、命令行安装// 先更新gemsudo gem update --system // 需要漫长的等待3、执行命令brew install rubygem sources --remove https://rubygems.org/gem sources -a https://ruby.taobao.

2016-12-13 00:28:55 308

原创 iOS获取当前网络环境

1、首先导入系统头文件// 获取网络环境的方法+ (NSString *)networktype{ NSArray *subviews = [[[[UIApplication sharedApplication] valueForKey:@"statusBar"] valueForKey:@"foregroundView"]subviews]; NSNumber *dataNetw

2016-12-06 17:26:20 975

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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