自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 问答 (2)
  • 收藏
  • 关注

原创 category是如何为一个类添加属性的

 摘录自美团技术博文我们知道在category里面是无法为category添加实例变量的。但是我们很多时候需要在category中添加和对象关联的值,这个时候可以求助关联对象来实现。MyClass+Category1.h:#import "MyClass.h"@interface MyClass (Category1)@property(nonatomic,copy) NSString *...

2018-03-16 15:45:00 416

转载 ARC下OC对象和CF对象之间的桥接(bridge)

原文链接:http://www.cnblogs.com/zzltjnh/p/3885012.html在开发iOS应用程序时我们有时会用到Core Foundation对象简称CF,例如Core Graphics、Core Text,并且我们可能需要将CF对象和OC对象进行互相转化,我们知道,ARC环境下编译器不会自动管理CF对象的内存,所以当我们创建了一个CF对象以后就需要我们使用CFRe

2017-08-09 16:13:40 315

转载 谈谈 iOS 中图片的解压缩

原文链接:http://blog.leichunfeng.com/blog/2017/02/20/talking-about-the-decompression-of-the-image-in-ios/对于大多数 iOS 应用来说,图片往往是最占用手机内存的资源之一,同时也是不可或缺的组成部分。将一张图片从磁盘中加载出来,并最终显示到屏幕上,中间其实经过了一系列复杂的处理过程,

2017-06-28 10:50:52 455

转载 iOS下KVO使用过程中的陷阱

KVO,全称为Key-Value Observing,是iOS中的一种设计模式,用于检测对象的某些属性的实时变化情况并作出响应。网上广为流传普及的一个例子是利用KVO检测股票价格的变动,例如这里。这个例子作为扫盲入门还是可以的,但是当应用场景比较复杂时,里面的一些细节还是需要改进的,里面有多个地方存在crash的危险。本文旨在逐步递进深入地探讨出一种目前比较健壮稳定的KVO实现方案,弥补网上大部分

2017-06-02 10:45:29 427

转载 小心别让圆角成了你列表的帧数杀手

前言在iOS的世界,圆角无处不在,而且必须存在。因为圆角是符合人类视觉安全体验的,圆角让人觉得舒适,而方角在潜意识层次是具有伤害体验的,因为尖尖的东西总是有可能对人造成伤害的,所以我们更喜欢圆角。在我之前的文章中讲过,在iOS的中设置圆角是非常容易的一件事情,这也体现出苹果也是非常重视圆角这件事情的。圆角虽好,但如果使用不当,它就是你的帧数杀手,特别当它出现在滚动列表的时候。下面来

2017-05-26 17:00:35 231

转载 内存恶鬼drawRect - 谈画图功能的内存优化

感谢原作者:http://mp.weixin.qq.com/s?__biz=MjM5NTIyNTUyMQ==&mid=447105405&idx=1&sn=054dc54289a98e8a39f2b9386f4f620e&scene=23&srcid=0108RhyzhXk9wUwQvnW3cmZT#rd作者介绍作者:毕洪博 ( @毕洪博 ),iOS 开发者,pop Art 追随者

2017-05-04 18:57:41 499

转载 JSESSIONID、SESSION、cookie .

http://blog.csdn.net/fallinsky/article/details/6018812#所谓session可以这样理解:当与服务端进行会话时,比如说登陆成功后,服务端会为用户开壁一块内存区间,用以存放用户这次会话的一些内容,比如说用户名之类的。那么就需要一个东西来标志这个内存区间是你的而不是别人的,这个东西就是session id(jsessionid只是tomcat

2017-04-19 10:07:49 452

原创 读SDWebImage源码获取的知识点

1.NSDta (ImageContentType) 这个分类就一个方法+ (SDImageFormat)sd_imageFormatForImageData:(nullableNSData *)data {    if (!data) {        returnSDImageFormatUndefined;    }

2017-04-18 14:02:00 489

原创 纠结的const(static) 和 define

const(static) 和 define 在开发中常用来定义常量,这样做的好处是:使代码更易维护、提高代码的效率。1、const(static)const是C/C++中的一个关键字(修饰符),const一般用来定义一个常量,既然叫做常量,即以后再也不能修改其值。const 定义常量时,编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期

2017-03-17 11:54:54 345

原创 CALyer的详解

点击打开链接点击打开链接点击打开链接l

2017-01-14 09:48:51 415

转载 UIView的setNeedsLayout, layoutIfNeeded 和 layoutSubviews 方法之间的关系解释

layoutSubviews总结ios layout机制相关方法- (CGSize)sizeThatFits:(CGSize)size- (void)sizeToFit——————-- (void)layoutSubviews- (void)layoutIfNeeded- (void)setNeedsLayout——————–- (void)se

2016-10-17 14:38:40 199

转载 CGContextSaveGState与UIGraphicsPushContext的区别

原文地址点击打开链接- (void)drawRect:(CGRect)rect{    CGContextRef context = UIGraphicsGetCurrentContext();    CGContextSaveGState(context);    // do drawing here    CGContextRestoreGState(context

2016-10-08 17:12:39 288

转载 如何通过 bin setTitleEdgeInsets setImageEdgeInsets改变图片和文字的位置

原文:点击打开链接        UIButton内有两个控件titleLabel和imageView,可以用来显示一个文本和图片,这里的图片区别于背景图片。给UIButton设置了title和image后,它们会图片在左边,文本在图片右边显示。它们两个做为一个整体依赖于button的contentHorizontalAlignment居左居右或居中显示。        1.当button

2016-09-22 19:35:57 1082

转载 CALyer的contents和contentsGravity属性

原文:http://blog.csdn.net/majiakun1/article/details/50539701点击打开链接contents属性CALyer 有一个属性叫做contents,这个属性的类型被定义为id,意味着它可以是任何类型的对象。在这种情况下,你可以给contents属性赋任何值,你的app仍然能够编译通过。但是,在实践中,如果你给contents赋的

2016-08-02 14:45:12 755

原创 如何利用iOS多核高效遍历数组.

我们知道遍历数组是一个相对耗时的操作,而同时手机的核是越来越多,所以我们需要充分利用iOS多核的作用.特别是在遍历操作中还有其他耗时操作.像我们平时直接遍历数组的操作for (NSInteger i= 0,i //do something } 这样的代码不会随着手机的不断升级而提高效率.但是利用GCD可以实现充分利用多核.并且随着手机不断升级,同样的

2016-07-26 16:17:32 2274

原创 iOS9适配 之 关于info.plist 第三方登录 添加URL Schemes白名单

近期苹果公司iOS 9系统策略更新,限制了http协议的访问,此外应用需要在“Info.plist”中将要使用的URL Schemes列为白名单,才可正常检查其他应用是否安装。受此影响,当你的应用在iOS 9中需要使用 QQ/QQ空间/支付宝/微信SDK 的相关能力(分享、收藏、支付、登录等)时,需要在“Info.plist”里增加如下代码:  key>LSApplicatio

2016-07-18 14:44:13 402

原创 UIScrollViewDelegate

UIScrollViewDelegateUIScrollViewDelegate 是 UIScrollView 的 delegate protocol,UIScrollView 有意思的功能都是通过它的 delegate 方法实现的。了解这些方法被触发的条件及调用的顺序对于使用 UIScrollView 是很有必要的,本文主要讲拖动相关的效果,所以 zoom 相关的方法跳过不提,拖动相关的

2016-06-20 11:32:47 418

转载 关于CLASS , SEL, IMP的说明

原文地址: http://blog.csdn.net/dongdongdongjl/article/details/7793156cocoa当中的函数调用,是一种以消息的方式进行的函数调用,这一点与C++,java是有很大差别的。因此该类型的理解,会涉及到三个重要的概念,class,sel,IMP。class每个NSObject的第一个成员变量都是class类型

2016-06-12 14:11:31 290

转载 ios之"performSelector may cause a leak because its selector is unknown"警告原因及其解决办法

ios之"performSelector may cause a leak because its selector is unknown"警告原因及其解决办法时间 2014-12-01 16:36:00  ChildhoodAndy原文  http://childhood.logdown.com/posts/245042/ios-performselector-may-cause-a

2016-06-12 10:33:41 250

转载 iOS模拟网络差

原文:http://blog.csdn.net/ssrrxx111/article/details/46709373在iOS开发中,针对不同网络状况做一下测试处理是很有必要的。但是我发现还是有一些iOS开发者不太注意到不同网络环境下的调试问题,或者说不清楚如何调试这种情况。下面我将针对真机和模拟器分别做简单的说明。告诉大家如何模拟不同的网络状况。1.

2016-06-06 13:50:20 2576

原创 idfa idfv mac地址

想要追踪、统计用户,自然离不开用户唯一标识符,这是每个公司都面临的问题。在历史上唯一标识符很多,如UDID、MAC地址、OpenUDID等,有些已经挂掉了.本文介绍几个能用的.在iOS 6中介绍的Vendor(idfv)或Advertising(idfa)标示符(苹果推荐使用的)idfa(Advertising Identifier):可以理解为广告id,apple公司提供

2016-06-05 13:31:45 1239

原创 KVO底层实现--写一个自己的KVO

KVO底层原理  Person * p =[[Personalloc] init];[p addObserver:selfforKeyPath:@"age"options:NSKeyValueObservingOptionNewcontext:nil];p这个对象一旦添加观察者后,系统会将这个Person这个类的isa指针修改为NSKVONotifying_Pe

2016-05-27 14:42:50 1169

原创 心得总结

一,需求写完代但是没有接口支持导致在项目里没有运行新代码的入口   Debug模式给主界面某个按钮添加个长按手势,push到新的界面用于测试新写的代码二,autoreleasepool本质是一个C++语言写的双向链表push pop三,自定义键盘时,为了拿到first responsder 第一次遍历,拿到后弱引用,后续不需要再遍历四,

2016-05-26 11:20:39 232

原创 微信摇一摇的代码实现

////  ViewController.m//  shuaxin////  Created by SGQ on 16/5/9.//  Copyright © 2016年 GQ. All rights reserved.//#import "ViewController.h"#import @inter

2016-05-09 18:13:34 3074

转载 Core Motion框架使用方法

from : http://mobile.51cto.com/iphone-285018.htmiOS4中Core Motion框架使用方法是本文要介绍的内容,主要是来学习IOS4中框架的内容。在iOS4之前,加速度计由UIAccelerometer类来负责采集工作,而电子罗盘则由Core Location接管。而iPhone4的推出,由于加速度计的升级(有消息说使用的是这款芯

2016-05-09 16:25:26 414

转载 Xcode多种Build Configuration配置使用

本文来自http://www.jianshu.com/p/51a2bbe877aa测试环境OS X Yosemite 10.10.5Xcode 7.0.1Build Configuration?Xcode默认会有2个编译模式,一个是Debug,一个是Release。Release下不能调试程序,编译时有做编译优化,会比用Debug打包出来的运行快,另外包也会更小。

2016-05-04 19:00:12 525

转载 UIView的alpha、hidden和opaque属性之间的关系和区别

UIView的alpha、hidden和opaque属性之间的关系和区别作者:wangzz原文地址:http://blog.csdn.net/wzzvictory/article/details/10076323转载请注明出处如果觉得文章对你有所帮助,请通过留言或关注微信公众帐号wangzzstrive来支持我,谢谢!UIView的这几个属性

2016-04-29 09:55:21 376

原创 为什么不要在category中重写一个类原有的方法

理由如下:1、category没有办法去代替子类,它不能像子类一样通过super去调用父类的方法实现。如果category中重写覆盖了当前类中的某个方法,那么这个当前类中的原始方法实现,将永远不会被执行,这在某些方法里是致命的。(ps:这里提一下,+(void)load方法是一个特例,它会在当前类执行完之后再在category中执行。)2、同时,一个category也不能可靠的覆盖

2016-04-27 10:13:24 4344

原创 NSObject的load和initialize方法的加载时机和super关系

load--当类被加进内存的时候会执行这个函数。当父类和子类都实现load函数时,父类的load函数会被先执行。load函数是系统自动加载的,因此不需要调用父类的load函数,否则父类的load函数会多次执行。在Category中写load函数是不会替换原始类中的load函数的,原始类和Category中的load函数都会被执行,原始类的load会先被执行,再执行Category中的load函数。...

2016-04-27 09:31:55 855 2

转载 iOS开发 贝塞尔曲线UIBezierPath

原文地址 http://www.cnblogs.com/moyunmo/p/3600091.html?utm_source=tuicool&utm_medium=referral使用UIBezierPath类可以创建基于矢量的路径,这个类在UIKit中。此类是Core Graphics框架关于path的一个封装。使用此类可以定义简单的形状,如椭圆或者矩形,或者有多个直线

2016-04-21 18:14:24 290

原创 iOS开发之指定UIView的某几个角为圆角

如果需要将UIView的4个角全部都为圆角,做法相当简单,只需设置其Layer的cornerRadius属性即可(项目需要使用QuartzCore框架)。而若要指定某几个角(小于4)为圆角而别的不变时,这种方法就不好用了。一种简单的实现方式 ,用到CAShapeLayer    UIView *redView = [[UIViewalloc] initWithFrame:CGRec

2016-04-20 12:19:59 434

原创 UIBezierPath贝塞尔弧线常用方法记

//根据一个矩形画曲线+ (UIBezierPath *)bezierPathWithRect:(CGRect)rect//根据矩形框的内切圆画曲线+ (UIBezierPath *)bezierPathWithOvalInRect:(CGRect)rect//根据矩形画带圆角的曲线+ (UIBezierPath *)be

2016-04-20 12:04:17 219

转载 基于CAShapeLayer和贝塞尔曲线的圆形进度条动画【转载】

原文链接 http://blog.it985.com/16042.html初次接触CAShapeLayer和贝塞尔曲线,看了下极客学院的视频。对初学者来说感觉还不错。今天来说一个通过CAShapeLayer和贝塞尔曲线搭配的方法,创建的简单的圆形进度条的教程先简单的介绍下CAShapeLayer1,CAShapeLayer继承自CALayer,可使用CALayer的所有属性2,

2016-04-20 11:55:01 356

转载 XCode工程中 Project 和 Targets区别

XCode工程中 Targets讲解是本文要介绍的内容,相信很多人都注意到XCode中, 有个Target的概念. 这在很多地方都有所体现, 比如打开一个工程后, 左侧的列表中有Targets一项, 而在工程界面的顶部菜单中, project里面也有多个涉及到Target的项目, 那么这个Target到底是什么呢? Apple的人是这样说的:“ Targets that define

2016-04-19 14:45:40 325

转载 如何使用Xcode的Targets来管理开发和生产版本的构建( 还不懂,复制过来后面再看)

如何使用Xcode的Targets来管理开发和生产版本的构建CocoaChina2016-03-31 08:42:41阅读(2329)评论(0)声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。举报    编者提示:这篇文章由Eugene Trapeznikov贡献。想象一下,你已经完成了应用程序的开发和测

2016-04-19 14:17:01 519

原创 iOS为类别添加属性的方法(RunTime)

一般认为Category不能添加变量,其实系统已经告诉我们是可以的.这家伙已经给UIViewController添加了图中的几个属性,那么如何实现?其实是使用@dynamic 来动态添加的。 (即运行时Runtime)代码:1.创建Person类#import @interface Person :NSObject@propert

2016-04-15 14:35:22 7412

原创 edgesForExtendedLayout、extendedLayoutIncludesOpaqueBars、automaticallyAdjustsScrollViewInsets属性详解

edgesForExtendedLayout:在IOS7以后 ViewController 开始使用全屏布局的,而且是默认的行为通常涉及到布局,就离不开这个属性 edgesForExtendedLayout,它是一个类型为UIExtendedEdge的属性,指定边缘要延伸的方向,它的默认值很自然地是UIRectEdgeAll,四周边缘均延伸,就是说,如果即使视图中上有navigat

2016-04-14 15:53:48 253

转载 MJExtension底层实现原理简单剖析

最简单的字典首先,从最简单的字典开始.NSDictionary *dict = @{ @"name" : @"Jack", @"icon" : @"lufy.png", @"age" : @"20",

2016-04-14 11:52:17 4468

原创 UIUItextfield输入类似银行卡号需要每四位加一个空格的实现

//  Copyright © 2016年 GQ. All rights reserved.//#import "ViewController.h"@interface ViewController ()UITextFieldDelegate>@end@implementation ViewController

2016-04-13 18:40:30 2841

原创 常驻线程的创建--线程不死之谜

主线程不死是因为主线程里面有一个RunLoop,RunLoop里面有一个do while死循环,保证了程序的不退出  那么如果我们有一个需求,需要一直在后台进行某个耗时操作,比如检查联网状态,比如扫描用户的某些行为等等.这时候肯定要在子线程进行,如果能保证一个子线程的不死,就能避免频繁的创建与销毁线程.  方法:  模仿主线程不死的操作1.创建并强引用线程2.往该线程里添加

2016-04-13 14:59:26 5053

空空如也

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

TA关注的人

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