自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zhz459880251的博客

不进步就是退步!

  • 博客(105)
  • 资源 (1)
  • 收藏
  • 关注

原创 Universal Links 接入指南

如果你的app支持了Universal Links, iOS用户点击你网站的链接可以直接打开已经安装的app, 而不用通过打开Safari, 如果你的app没有安装那么点击链接是通过Safari打开你的网站,Universal Links为您提供了一些自定义Scheme方案无法获得的关键优势, 主要包括:独特: 与自定义Scheme方案不同,其他应用无法声明通用链接,因为通用链接使用的是指向...

2019-10-12 19:02:29 10517 2

原创 Flutter学习三:Dart 函数

Dart函数1. 函数既能赋值给变量, 又能作为参数传递2. 函数声明如果没有显示申明返回值类型时会默认当做dynamic处理3. 对于只包含一个表达式的函数可以使用箭头语法4. 函数的参数有两种类型: 必选 可选4.1. 可选参数:4.1.1. 可选命名参数:4.1.2. 可选位置参数:4.2. 参数的默认值:5. 每个app都有一个顶级函数main()作为入口, 返回值是void, 可选是参数...

2018-12-12 22:49:38 1414

原创 Flutter学习二: Dart变量修饰符

一, 变量声明note: 变量的声明必须使用 ‘const’, ‘final’, ‘var’ 或者 其他type namea = 123 //error1. var1.1 与swift的var相同, 类型一旦确定, 不能再修改1.2 当var声明一个变量后, Dart在编译时会根据第一次赋值数据的类型来推断其类型,编译结束后其类型就已经被确定 var a = 1000; ...

2018-12-10 22:10:58 1451

原创 Flutter学习一: Dart数据类型

官网地址: https://www.dartlang.org/guides/language/language-tour#built-in-types目录系统内建类型1. Numbers1.1 int1.2 double2. Strings2.1. 合并字符串可以使用 + 操作符2.2. 字符串镶嵌2.3. 创建多行字符串2.4. “raw” string3. Booleans4. Lists...

2018-12-09 20:58:00 4553

原创 app内评价 SKStoreReviewController

SKStoreReviewController/** Request StoreKit to ask the user for an app review. This may or may not show any UI. * * Given this may not succussfully present an alert to the user, it is not appro...

2018-07-12 16:23:56 3239

原创 Class 内部结构

在OC中类, 对象和方法, 都是c结构体struct objc_class { Class _Nonnull isa; //isa Class类型的指针#if !__OBJC2__ Class _Nullable super_class; const char * _Nonnull name; long version; long info; ...

2018-07-07 18:51:38 278

原创 Tweak前期工作

1. 定位目标文件ps方法 ps -e | grep WeChatfind 方法 find name sshd通过ifunBox, 或者ifile等工具, 直接去目录找 AppStore App目录: /var/mobile/Containers/Bundle/Application 系统App, cydia安装的: /Application 开机启动, daemon的配...

2018-07-07 17:53:30 311

原创 Tweak底层实现Cydia Substrate

原来叫Mobile Substrate他是越狱后插件和软件运行的基础依赖包, 提供动态注入的功能, Logos语法底层就是通过Cydia Substrate实现主要由三部分组成: MobileHooker, MoblieLoader, safe mode1. MobileHooker用于hook方法主要用到两个函数: - MSHookMessageEx 主要作用于...

2018-07-07 17:33:10 3218

原创 JavaScript 与 Native交互(包括ReactNative)

一. 概念JavaScriptCore框架 是苹果在iOS7引入的框架,该框架让 Objective-C 和 JavaScript 代码直接的交互变得更加的简单方便。 JavaScriptCore框架 其实就是基于 webkit 中以C/C++实现的JavaScriptCore 的一个包装二. JavaScriptCore框架常用类JSContext: JS运行的环境, ...

2018-03-07 14:17:17 729

原创 React及React Native 安装

一 React1. 概念 React 是一个用于构建用户界面的 javascript 库。 React主要用于构建UI,是 MVC 中的 V(视图)。 React 起源于 Facebook 的内部项目,用来架设 Instagram 的网站,并于 2013 年 5 月开源。 React 拥有较高的性能,代码逻辑非常简单。2. 特点高效 −React通过对DOM的模拟,最大限度

2018-01-03 16:06:27 1005

原创 单元测试和集成测试

单元测试和集成测试Unit: 单元测试,保证每一个类能够正常工作 UI: UI测试,也叫做集成测试,从业务层的角度保证各个业务可以正常工作。0. 单元测试 准则: 保持测试的单一性 无耦合概念: 在计算机编程中,单元测试(英语:Unit Testing)又称为模块测试, 是针对程序模块的最小单位来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单

2017-09-15 15:09:16 3137

原创 数据cache

#import <Foundation/Foundation.h>@class User;@interface CacheUtility : NSObject+ (BOOL)archiveUserWithArray:(NSArray<User *> *)array;+ (NSArray<User *> *)unArchiveUserFromCache;+ (BOOL)writeToCacheFi

2017-03-02 11:55:58 363

原创 Python 爬虫初探

以前用OC 尝试性的抓取网页然后再用正则分析, 相当的复杂 最近接触python, 做了相同的功能, 仅仅不到30行, 瞬间感觉到py的高大尚首先需要 引入3个库 urllib 和 BeautifulSoup lxml, urllib是网络请求的, BeautifulSoup是读取数据的, lxml解析数据的(当然这个也可以用系统提供的html.parser, 不过建议用lxml, 解析速度快

2017-02-13 15:59:52 747

原创 数组排序sortedArrayUsingComparator

按年龄大小排序- (NSArray *)sortPersonAge:(NSArray<Person *> *)array{ NSArray *arr = [array sortedArrayUsingComparator:^NSComparisonResult(id obj1,id obj2) { Person *person1 = (Person *)obj1;

2016-12-12 22:44:21 1051

原创 macOS Sierra 找回消失的 “任何来源”

macOS Sierra 加强了系统安全性,降低不良应用威胁电脑安全的几率, 「系统偏好设置 - 安全与隐私 - 通用」中「允许任何来源应用运行」的选项消失要想找回这个选项,可以在终端中输入sudo spctl --master-disable指令,验证密码之后即可重新开启这个选项

2016-10-13 16:25:59 866

原创 Method Swizzling(转载+补充)

Method SwizzlingMethod swizzling 用于改变一个已经存在的 selector 的实现。通过这一技术,我们可以在运行时通过修改类的分发表中selector对应的函数,来修改方法的实现。#import <objc/runtime.h>@implementation UIViewController (Tracking)+ (void)load { static di

2016-10-11 13:12:54 514

原创 instancesRespondToSelector与respondsToSelector的区别

instancesRespondToSelector与respondsToSelector的区别大多数时候用到的都是respondsToSelector这方法, 很少用到instancesRespondToSelector, 所以对instancesRespondToSelector了解甚少, 网上爬了下, 做了个总结:instancesRespondToSelector 类方法, 只能写在类

2016-10-10 17:30:49 344

原创 生成Description

static NSMutableDictionary *modelsDescription = nil;@implementation BaseObject+ (void)load{ static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ modelsDescription = [NSMuta

2016-08-08 10:28:23 454

原创 忽略编译警告

有时候 我们使用的第三方库会考虑到兼容问题, 而使用一些废弃的api, 这样在编译的时候就会出现警告, 如果确认代码没问题, 可以加上-w的编译参数, 使得这些文件不产生警告, 使用-w禁止掉所有的编译警告, 使用-Wno-unused-variable只禁止掉未使用的变量的编译警告

2016-04-26 10:16:53 6472 2

原创 iOS-面试题整理

【※】@property中有哪些属性关键字?访问控制组nonatomicatomic内存管理组weakstrongcopy读写组readwritereadonly重命名组gettersetter【※】weak属性需要在dealloc中置nil么?不需要, 使用weak修饰的属性, 会在RC从1变为0的时候自动销毁,并置为nil【※※】@synthesize和@dynamic

2016-04-09 19:50:35 2720

原创 GCD小结

GCD各种队列的执行效果GCD的2个核心: 任务 队列 并发队列 手动创建的串行队列 主队列 同步(sync) 不会开启新线程 2. 串行执行任务 1.不会开启新线程 2. 串行执行任务 异步(async) 1. 开启新线程 2. 并发执行任务 1. 开启新线程 2. 串行执行任务- 1. 同步异步: 能不能开启线程 1.1 同步: 不能开启新线程, 1.2

2016-04-07 11:09:30 328

原创 iOS- 响应者链, runtime, runloop

响应者链 响应者链条概念:iOS系统检测到手指触摸(Touch)操作时会将其打包成一个UIEvent对象,并放入当前活动Application的事件队列,单例的UIApplication会从事件队列中取出触摸事件并传递给单例的UIWindow来处理,UIWindow对象首先会使用hitTest:withEvent:方法寻找此次Touch操作初始点所在的视图(View),即需要将触摸事件传递给其处

2016-04-04 23:51:45 2471

原创 iOS-UIKit继承图

很基础的东西, 如果不review还是会忘的!

2016-03-30 00:04:09 1175

原创 iOS-Block的总结

前言: 前面学习了那么多block的知识, 其实就为了解决项目中的几个问题 1. ARC 与 MRC下__block的区别 2. __block 和 __weak的区别 3. block内嵌的注意事项 4. block使用场景中的block块中, 引用self是否使用__weak或__block1. ARC 与 MRC下__block的区别2. __block 和 __wea

2016-03-13 22:55:21 1043

转载 iOS-Block和对象的内存管理(三)

在上一篇文章中,我们讲了很多关于 block 和基础变量的内存管理,接着我们聊聊 block 和对象的内存管理,如 block 经常会碰到的循环引用问题等等。获取对象照例先来段代码轻松下,瞧瞧 block 是怎么获取外部对象的/********************** capturing objects **********************/typedef void (^blk_t)(

2016-03-13 17:10:48 893

转载 iOS-Block和变量的内存管理(二)

了解了 block的实现,我们接着来聊聊 block 和变量的内存管理。本文将介绍 可写变量 block的内存段 __block变量的内存段等内容 看完本文会对 block 和变量的内存管理有更加清晰的认识。上篇文章举了个例子,在 block 内获取了一个外部的局部变量,可以读取,但无法进行写入的修改操作。在 C 语言中有三种类型的变量,可在 block 内进行读写操作

2016-03-13 16:52:23 838

转载 iOS-Block的实现(一)

block 顾名思义就是代码块,将同一逻辑的代码放在一个块,使代码更简洁紧凑,易于阅读,而且它比函数使用更方便,代码更美观,因而广受开发者欢迎。但同时 block 也是 iOS 开发中坑最多的地方之一,因此有必要了解下 block 的实现原理,知其然,更知其所以然,才能从根本上避免挖坑和踩坑。需要知道的是,block 只是 Objective-C 对闭包的实现,并不是 iOS 独有的概念,在 C++

2016-03-13 16:23:07 392

原创 iOS-项目中的知识点总结

项目中的积累1. 相对路径$(SRCROOT)/2. 把返回按钮的文字隐藏 [[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -60) forBarMetrics:UIBarMetricsDefault];3. 改变 NavigationBar 的字体颜色Naviga

2016-02-27 23:02:43 498

原创 UIImage+Addition

根据字符串生成二维码声明.h/** * 根据字符串生成二维码 * * @param content 需要生成二维码的字符串 * * @return 生成二维码图片 */+ (UIImage *)qrImageWithContent:(NSString *)content;/** * 根据字符串和size生成二维码 * * @param content 需要生成二维码的字

2016-02-27 23:01:37 615

原创 NSString+Addition

1.判断是否是空白字符串+ (BOOL)isBlankString:(NSString *)string;///判断是否是空白字符串+ (BOOL)isBlankString:(NSString *)string{ if (string == nil || string == NULL) { return YES; } if ([string isKind

2016-02-27 23:01:00 360

原创 NSDictionary+Addition

对从后台取得数据进行安全处理.h文件@interface NSDictionary (SafeAccess)- (NSString*)stringForKey:(id)key;- (NSNumber*)numberForKey:(id)key;- (NSArray*)arrayForKey:(id)key;- (NSDictionary*)dictionaryForKey:(id)key;- (N

2016-02-27 23:00:29 562

原创 NSDate+Addition

date 转 string///date 转 string+ (NSString *)stringFromDate:(NSDate *)date dateFormatter:(NSString *)formatter { NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; [dateFormat setDate

2016-02-27 22:59:47 373

原创 NSArray+Addition

对从后台取得数据进行安全处理.h文件@interface NSArray (SafeAccess)-(id)objectWithIndex:(NSUInteger)index;- (NSString*)stringWithIndex:(NSUInteger)index;- (NSNumber*)numberWithIndex:(NSUInteger)index;- (NSArray*)array

2016-02-27 22:58:51 468

原创 第三方SSKeychain保存用户密码

UDID(-[UIDevice uniqueIdentifier])在iOS7.0被禁用,一般使用UUID来作为设备的唯一标识。 获取到UUID后,如果用NSUserDefaults存储,当程序被卸载后重装时,再获得的UUID和之前就不同了。 使用keychain存储可以保证程序卸载重装时,UUID不变。但当刷机或者升级系统后,UUID还是会改变的。1. keychain的功能 key

2016-01-31 18:20:33 2045

原创 升级XCode后点击没打开界面的原因

升级到xcode7.1后点击xcode想新建项目发现就跳了几下就没反应了, 想新建项目只好shift+cmd+N, 但是每次点击后没反应的感觉好不爽啊今天有空检查了下原因: 点击xcode后, 状态栏是有反应的 点击Window, 是不是有个Welcome to Xcode 快捷键是shift+cmd+1 然后就打开了, 你会发现最后一行的show this window when

2016-01-24 16:33:01 3841

原创 Class-dump安装和简单使用

Class-dump 是一款用来检测存储在 Mach-O 文件里的 Objective-C runtime 信息的命令行工具。他可以检测出 class,category,protocol 的声明。Class-dump 产生的是 Objective-C 语法格式的声明,所以它的可读性更高。虽然只能检测出声明文件, 也就是.h文件, 但是足够我们学习了下载: class-dump-3.5.dmg下载完成

2016-01-24 03:26:56 936

转载 Mac和 iOS下的对称和非对称加密算法的使用

Mac 和 iOS 上使用到的对称和非对称加密算法. 包括RSA,DSA, AES, DES, 3DES 和 blowfish 等等. 因为要实现ssh协议, 所以用到了这些算法, 这些算法在mac和ios上的接口比较难用(这里不提 openssl 在 apple 上的接口了)原作者主要参考了apple的文档: Cryptographic Services Guide Apple Enc

2016-01-20 23:00:52 1504

翻译 NSTimer及一些补充(CADisplayLink)

简介使用NSTimer能在给一个定的时间后发送一个消息给target 一般NSTimer结合runloop工作, 所以为了能够正确地使用NSTimer, 有必要学习一下NSRunLoop 和 Threading Programming Guide(PS: 大致了解一下就行). 特别注意: run loops maintain strong references to their time

2016-01-11 18:25:12 1139

原创 NSString 与 Class 互转

字符串转对象 Class class = NSClassFromString(self.arr[sender.tag - 100]);对象转字符串 VC.navigationItem.title = NSStringFromClass([VC class]);完整代码- (void)viewDidLoad { [super viewDidLoad]; self.arr =

2016-01-07 17:30:22 1280

原创 nil-Nil-NULL-NSNull区别

nil: 一般赋值给空对象Nil: Objective-C类的字面零值NULL: 一般赋值给nil之外的其他空值。如SEL等;NSNull: NSNull只有一个方法:+ (NSNull *) null;   [NSNull null]用来在NSArray和NSDictionary中加入非nil(表示列表结束)的空值. 当向nil发送消息时,返回NO,不会有异常,程序将继续执行下去;

2016-01-07 14:57:52 409

oc getter 自动生成器

自动生成 lazy method, 方便实用

2017-05-03

空空如也

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

TA关注的人

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