自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(77)
  • 资源 (1)
  • 收藏
  • 关注

原创 沙盒和App Group

1.沙盒机制沙盒也叫沙箱,英文standbox,其原理是通过重定向技术,把程序生成和修改的文件定向到自身文件夹中。在沙盒机制下,每个程序之间的文件夹不能互相访问。iOS系统为了保证系统安全,采用了这种机制iOS 应用程序在安装时,会创建属于自己的沙盒文件,应用程序不能直接访问其他应用程序的沙盒文件,当应用程序需要向外部请求或接收数据时,都需要经过权限认证,否则,无法获取到数据。应用程序中所有的非代码文件都保存在沙盒中,比如图片、声音、属性列表,sqlite数据库和文本文件等。2.获取沙盒路径

2022-01-25 18:04:12 2788

原创 【无标题】

一.NSOperation把操作加入到队列。NSOperation是一个抽象的类,需要初始化子类去实现。三种方式使用它:1.使用子类 NSInvocationOperation;2、使用子类 NSBlockOperation; 3、自定义继承自 NSOperation 的子类,通过实现内部相应的方法来封装操作。二、NSInvocationOperation//创建事务NSInvocationOperation *op = [[NSInvocationOperation alloc] in

2022-01-25 17:15:49 333

原创 RxSwift核心逻辑(二)

一.序列继承链 Observable遵循了ObservableType,通过查看Create.swift文件的源码发现ObservableType通过扩展添加了方法create。extension ObservableType { public static func create(_ subscribe: @escaping (AnyObserver<E&gt...

2019-08-02 17:47:14 276

原创 runtime消息发送&消息转发机制底层源码解析

?文章有点长,请做好心理准备...Let`s go! 基于Runtime机制,OC的对象发送消息就会通过一系列操作,根据对象从相应的类中查找方法对应的列表(类即类对象,方法存储在元类的方法列表中),方法列表实质是一个哈希表,通过SEL查找到IMP(即函数指针),返回相应的实现。struct objc_class { Class _Nonnull isa OBJC_ISA_AVAILABILITY;#if !__OBJC2__ Class _Nullable s...

2019-08-01 18:36:49 438

原创 函数响应编程&RxSwift(一)

RxSwift安装: CocoPod导入: pod 'RxSwift' pod 'RxCocoa'一.函数式编程 函数式编程是种编程范式,它需要我们将函数作为参数传递,或者作为返回值返还。我们可以通过组合不同的函数来得到想要的结果。用数学表达式来表示:函数 y = f(x) x参数可以是一个函数 x = f(x) 例如:2 ...

2019-07-22 18:15:15 400

原创 isKindOfClass 和 isMemberOfClass 区别深究

首先来看一道经典面试题:以下代码的打印结果是什么? BOOL rs1 = [[NSObject class] isKindOfClass:[NSObject class]]; BOOL rs2 = [[NSObject class] isMemberOfClass:[NSObject class]]; BOOL rs3 = [[Person class] isKindOfClass:...

2018-12-25 15:27:25 2468

原创 GPUImage

概念:GPUImage是基于GUP图像和视频处理的开源iOS框架,支持多种图片处理滤镜,基于GPU的图像加速,所以支持照相机、摄像机的实时滤镜处理。首先了解GPUImage的几个基本的概念:- input 输入源- ouput 输出源- filter 滤镜处理流程:GPUImageFilter是GPUImage里面重要的一个类,GPUImageFilter和响应链的其他元素实现了...

2018-08-02 16:45:15 1877

原创 Runtime实现UIButton扩大点击区(Swift)

问题:按钮点击区域过小,想自己控制按钮的点击区域大小。(采用Runtime运行时)解决:import UIKitimport ObjectiveC.runtimeextension UIButton { ///提供多个运行时的key struct RuntimeKey { static let buttonKey = UnsafeRawPointer...

2018-06-05 15:38:13 1050 2

原创 iOS支付宝、微信支付

微信支付:1.获取的数据有:(红色的一定要知道,因为生成签名会用到)参数注释例如appid应用IDwx3ff3d1fc2ff83937mch_id商户号1448474102APP_KEY954d05bee14a4443da66df49c20fac15WX_APPSecret1b887f214421222e1b6a79e4bc37200f2.官方网站下载sdk文件,将以下文件拖入到自己的项目中3.添...

2018-03-12 20:45:09 339

转载 "_OBJC_CLASS_$_CMMotionManager", referenced from:xxx

参考:http://stackoverflow.com/questions/22164753/linker-error-with-sharekit-iOS编译报错:"_OBJC_CLASS_$_CMMotionManager", referenced from:xxx解决方法:Looks like you are missing quite a

2017-03-12 11:54:20 569

原创 animationWithKeyPath的值

animationWithKeyPath的值:  transform.scale = 比例轉換    transform.scale.x = 闊的比例轉換    transform.scale.y = 高的比例轉換    transform.rotation.z = 平面圖的旋轉    opacity = 透明度    margin    zPosition 

2016-07-23 10:57:02 363

原创 Swift-构造函数(一)

------ 知之博客 期待与您交流! -------- 构造函数          构造函数:构造函数是一种特殊的函数,主要用来在创建对象时初始化对象,为对象成员变量设置初始值。        Swift中是支持函数重载的,所有的构造函数命都是init,虽然OC是不支持重载的,但是OC支持构造函数,OC中的构造函数是initWithXXX。       构造函数的作用:分

2016-07-13 20:55:49 2029 2

原创 iOS数据存储精讲

iOS开发中本地存储主要有三种形式XML属性列表(plist)归档Preference(偏好设置)NSKeyedArchiver归档(NSCoding)应用沙盒什么是应用沙盒??要想在本地存储数据,那就要知道一下什么是应用沙盒 ,其实很好理解应用沙盒就是应用的文件夹,与其他文件系统隔离。每一个iOS应用都有自己的应用沙盒,应用必须待在自己的沙盒里,其它应用不能访

2016-06-13 17:38:23 360

原创 《swift踩过的坑》之“swift中使用NSClassFromString”

先看一个问题,当代码执行过 1 的,po targetvc 显然是有值出现的然而执行下一行代码 2 之后 ,程序崩掉了,提示了一个错误:unexpectedly found nil while unwrapping an Optinal value我们自定义的类USIndividualSettingVC明明已经存在,为什么在展开的时候却找不到,发现为空?swift跟

2016-06-13 13:43:53 6154

原创 swif 中如何使用NSClassFromString

跟OC中的使用有点区别。let accessoryView:String = “XXX”        let Clz = NSClassFromString(accessoryView) as! 需要转换成的类型或者控制器.Type        let switcher:需要转换成的类型或者控制器 = Clz.init()       ok!

2016-06-12 10:56:49 290

原创 Swift 延时执行

采用 GCD 模式调用:// 创建目标队列let workingQueue = dispatch_queue_create("my_queue", nil) // 派发到刚创建的队列中,GCD 会负责进行线程调度dispatch_async(workingQueue) {    // 在 workingQueue 中异步进行    print

2016-06-09 20:02:02 6751

原创 CocoaPods安装及安装时奇怪问题(上篇)

CocoaPods 是 iOS 最常用最有名的类库管理工具! 必须掌握!CocoaPods 安装使用步骤:1. 利用 gem 安装 CocoaPods!1> gem 服务器在国外,提供了非常丰富的终端应用程序! gem 常用命令如下:{//  查看gem源    $ gem sources –l//  gem自身升级    $ sudo gem up

2016-06-07 06:55:57 321

原创 iOS状态栏&导航栏尺寸(宽度&高度)

iPhone开发当中,有时需要获取状态栏和导航栏高度、宽度信息,方便布局其他控件。下面介绍一下如何获取这些信息: // 状态栏(statusbar) CGRect rectStatus = [[UIApplication sharedApplication] statusBarFrame]; NSLog(@"status width - %f", rectStat

2016-06-03 11:56:23 6135

原创 iOS开发真机调试证书导出.p12文件

为什么要导出.p12文件当我们用大于三个mac设备开发应用时,想要申请新的证书,如果在我们的证书里,包含了3个发布证书,2个开发证书,可以发现再也申请不了开发证书和发布证书了(一般在我们的证书界面中应该只有一个开发证书,一个发布证书,没必要生成那么多的证书,证书一般在过期之后才会重新添加。)这时候,再点击“+”时,就会发现点击不了开发和发布证书,也就是添加不了开发证书和发布证书了:

2016-05-29 11:59:31 2918

原创 git版本回退

先说今天遇到的问题,看到一个config.php的配置文件一直在修改的状态下,但是和远程的config.php是不一致的,我不需要提交它,但是看它在 modified的状态下,很不爽,想删除它,git rm config.php,然后git push了下,结果不仅把本地的config.php干掉了,把远程的config.php也给干掉了,原来这个git rm有这样的功效,而且我 删除的不只是这一个

2016-05-29 02:42:35 1253

转载 Your build settings specify a provisioning profile with the UUID, no provisioning profile was

在Archive项目时,出现了“Your build settings specify a provisioning profile with the UUID “”, however, no such provisioning profile was found”的出错。一直提示指定UUID的provisioning profile找不到,感觉很奇怪。明明自己的provisioning prof

2016-05-29 01:16:10 253

转载 崩溃日志分析

http://www.jianshu.com/p/12a2402b29c2

2016-05-26 15:26:14 297

转载 iOS开发-SVN管理代码

已经安装了的小伙伴请直接看三步骤一、下载地址CornerStoneV2.6:http://pan.baidu.com/s/1qWEsEbM密码:www.macx.cn二、安装破解方法1、安装之前将本机日期改为未来的某个日期,然后双击安装,按照指定流程操作即可2、如果安装前忘记改日期,则只能通过修改plist的方式进行破解    a.显示系统隐藏文件,

2016-05-20 20:22:29 1108

原创 iOS - block

1. Block的声明和线程安全Block属性的声明,首先需要用copy修饰符,因为只有copy后的Block才会在堆中,栈中的Block的生命周期是和栈绑定的,可以参考之前的文章(iOS: 非ARC下返回Block)。另一个需要注意的问题是关于线程安全,在声明Block属性时需要确认“在调用Block时另一个线程有没有可能去修改Block?”这个问题,如果确定不会有这种情况发生的话,那么

2016-05-18 08:06:06 273

原创 程序启动原理和UIApplication

一、UIApplication1.简单介绍(1)UIApplication对象是应用程序的象征,一个UIApplication对象就代表一个应用程序。(2)每一个应用都有自己的UIApplication对象,而且是单例的,如果试图在程序中新建一个UIApplication对象,那么将报错提示。(3)通过[UIApplicationsharedApplication]可以获得这个

2016-05-17 22:08:57 1367 1

原创 iOS-应用程序生命周期

开发应用程序都要了解其生命周期,开始接触android时也是从应用程序生命周期开始的,android的应用程序生命周期更多是其组件的生命周期,例如Activity、Service。今天我们接触一下iOS应用程序的生命周期,       iOS的入口在main.m文件:int main(int argc, char *argv[]){ @autoreleasepool {

2016-05-17 17:47:55 342

原创 Git常用操作命令:

Git常用操作命令:1) 远程仓库相关命令检出仓库:$ git clone git://github.com/jquery/jquery.git查看远程仓库:$ git remote -v添加远程仓库:$ git remote add [name] [url]删除远程仓库:$ git remote rm [name]修改远程仓库:$ git remo

2016-04-18 20:06:15 233

转载 CoreText NSTextView和Attribued String

目录[-]NSTextView和Attribued StringCore Text一.Core Text知识准备1.字符(Character)和字形(Glyphs)2.坐标系3.NSMutableAttributedString 和 CFMutableAttributedStringRef二.Core Text对象模型三.Core Text实战

2016-04-08 20:26:36 2372

原创 UILabel添加删除线

效果图:在制作价格时候时候,会用到打折的情况,这种删除线又是如何加上去的呢?

2016-04-08 19:52:07 1125

原创 ios开发打电话,发短信,打开网址

1、调用 自带mail[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto://[email protected]"]]; 2、调用 电话phone[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"

2016-04-05 17:51:00 417

原创 iOS复制到剪接版

UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];    pasteboard.string = self.label.text;

2016-04-05 17:40:43 258

原创 如何让按钮UIButton的文字左对齐?

1.推荐两种方案:UIEdgeInsets titleEdgeInsets; 属性就行了,使用UIEdgeInsetsMake(CGFloat top, CGFloat left, CGFloat bottom, CGFloat right)构造一个结构体,设置给btn即可。左对齐UIEdgeInsetsMake(0, -20,0  , 0);(数值自己看着调把)

2016-04-05 16:15:40 1547

原创 Git代码回滚

git代码库回滚: 指的是将代码库某分支退回到以前的某个commit id【本地代码库回滚】:git reset --hard commit-id :回滚到commit-id,讲commit-id之后提交的commit都去除git reset --hard HEAD~3:将最近3次的提交回滚 【远程代码库回滚】:这个是重点要说的内容,过程比本地回滚要复杂应用场景:自动部

2016-04-01 09:54:32 2693

原创 tableview 上的文字其实就相当在label的操作

问题一 当我们解析的数据超过了一行 怎么让让它换行?解决方案:设置它的行数 cell.textLabel.numberOfLines = 2;问题二 如何改变字体的大小?解决方案:设置字体大小  cell.textLabel.font = [UIFont systemFontOfSize:12];

2016-03-28 20:29:49 539

原创 Array 常用函数

NSString用分隔符把字符串分割成字符串数组- (NSArray *)componentsSeparatedByString:(NSString *)separator;NSArray创建方法通过一个对象创建数组。- (id)initWithObject:(id)object;+ (id)arrayWithObje

2016-03-24 13:31:08 659

转载 IOS中UITableViewCell使用详解

- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier;Cell的初始化方法,可以设置一个风格和标识符,风格的枚举如下:?123456t

2016-03-24 11:56:23 269

转载 优化UITableViewCell高度计算的那些事

优化UITableViewCell高度计算的那些事我是前言这篇文章是我和我们团队最近对 UITableViewCell 利用 AutoLayout 自动高度计算和 UITableView 滑动优化的一个总结。我们也在维护一个开源的扩展,UITableView+FDTemplateLayoutCell,让高度计算这个事情变的前所未有的简单,也受到了很多星星的支持,github

2016-03-23 20:30:31 376

原创 IOS viewDidLoad方法被执行两次(viewDidLoad和loadView方法详解)

为了搞清楚viewDidLoad、loadView等方法的用途和调用顺序,写了一个小demo,不料viewDidLoad方法被执行了两次,模拟器也一直是黑屏。查看了这两个方法的官方解释后找到了错误原因和解决方法。首先来看UIViewController.h文件中对viewDidLoad方法的解释:?

2016-03-23 10:58:46 1759

原创 View Controller生命周期的各个方法的调用

- (void)awakeFromNib;这个方法用的时候,outlet还没有连接起来,是view Controller刚从storyboard建的时候,没有完全建好,不过可能有一些事情要在这个方法里面完成,比如splitViewDelegate,需要在非常早期完成。- (void)viewDidLoad;用这个的时候,ViewController已经完全好了,outlet也已

2016-03-23 10:25:53 790

原创 百度地图添加多个大头针自定义图片

效果图:代码:1.设置两个属性BMKPointAnnotation* pointAnnotation;    //标注点1BMKPointAnnotation* animatedAnnotation; //标注点22.//换大头针- (BMKAnnotationView *)mapView:(BMKMapView *)ma

2016-03-21 16:22:36 4165 3

指针 面试题(经典)

只有真正的把试题做一遍才能达到效果,看完试题立马看答案达不到思考的效果,所以博主在这里就暂时不给答案了,想要答案的可以留下邮箱,谢谢

2015-07-10

空空如也

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

TA关注的人

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