![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
心得
文章平均质量分 62
热气球的天空
这个作者很懒,什么都没留下…
展开
-
给tableView 截个图 只要cell的截图
个UITabView 截个图,如果直接tableView.ayer render 出来的是一张白纸,只能一个一个单位的截图,然后拼成一张图片原创 2016-01-29 12:01:29 · 1294 阅读 · 0 评论 -
心得总结
一,需求写完代但是没有接口支持导致在项目里没有运行新代码的入口 Debug模式给主界面某个按钮添加个长按手势,push到新的界面用于测试新写的代码二,autoreleasepool本质是一个C++语言写的双向链表push pop三,自定义键盘时,为了拿到first responsder 第一次遍历,拿到后弱引用,后续不需要再遍历四,原创 2016-05-26 11:20:39 · 232 阅读 · 0 评论 -
UIUItextfield输入类似银行卡号需要每四位加一个空格的实现
// Copyright © 2016年 GQ. All rights reserved.//#import "ViewController.h"@interface ViewController ()UITextFieldDelegate>@end@implementation ViewController原创 2016-04-13 18:40:30 · 2842 阅读 · 0 评论 -
如何使用Xcode的Targets来管理开发和生产版本的构建( 还不懂,复制过来后面再看)
如何使用Xcode的Targets来管理开发和生产版本的构建CocoaChina2016-03-31 08:42:41阅读(2329)评论(0)声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。举报 编者提示:这篇文章由Eugene Trapeznikov贡献。想象一下,你已经完成了应用程序的开发和测转载 2016-04-19 14:17:01 · 520 阅读 · 0 评论 -
微信摇一摇的代码实现
//// 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 · 3080 阅读 · 0 评论 -
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 · 1172 阅读 · 0 评论 -
idfa idfv mac地址
想要追踪、统计用户,自然离不开用户唯一标识符,这是每个公司都面临的问题。在历史上唯一标识符很多,如UDID、MAC地址、OpenUDID等,有些已经挂掉了.本文介绍几个能用的.在iOS 6中介绍的Vendor(idfv)或Advertising(idfa)标示符(苹果推荐使用的)idfa(Advertising Identifier):可以理解为广告id,apple公司提供原创 2016-06-05 13:31:45 · 1244 阅读 · 0 评论 -
如何利用iOS多核高效遍历数组.
我们知道遍历数组是一个相对耗时的操作,而同时手机的核是越来越多,所以我们需要充分利用iOS多核的作用.特别是在遍历操作中还有其他耗时操作.像我们平时直接遍历数组的操作for (NSInteger i= 0,i //do something } 这样的代码不会随着手机的不断升级而提高效率.但是利用GCD可以实现充分利用多核.并且随着手机不断升级,同样的原创 2016-07-26 16:17:32 · 2275 阅读 · 0 评论 -
xcode 使用的常用的快捷键
1.在各种点击看进入来到ballbutton 这个文件,想快速在左侧目录下定位到该文件 使用 cmd shift J 即可2.代码块移动cmd [ 左移 cmd ] 右移cmd opt [ 上移 cmd opt ] 下移原创 2016-03-24 13:42:20 · 513 阅读 · 0 评论 -
如何通过 bin setTitleEdgeInsets setImageEdgeInsets改变图片和文字的位置
原文:点击打开链接 UIButton内有两个控件titleLabel和imageView,可以用来显示一个文本和图片,这里的图片区别于背景图片。给UIButton设置了title和image后,它们会图片在左边,文本在图片右边显示。它们两个做为一个整体依赖于button的contentHorizontalAlignment居左居右或居中显示。 1.当button转载 2016-09-22 19:35:57 · 1082 阅读 · 0 评论 -
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 阅读 · 0 评论 -
CALyer的详解
点击打开链接点击打开链接点击打开链接l原创 2017-01-14 09:48:51 · 416 阅读 · 0 评论 -
纠结的const(static) 和 define
const(static) 和 define 在开发中常用来定义常量,这样做的好处是:使代码更易维护、提高代码的效率。1、const(static)const是C/C++中的一个关键字(修饰符),const一般用来定义一个常量,既然叫做常量,即以后再也不能修改其值。const 定义常量时,编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期原创 2017-03-17 11:54:54 · 345 阅读 · 0 评论 -
iOS为类别添加属性的方法(RunTime)
一般认为Category不能添加变量,其实系统已经告诉我们是可以的.这家伙已经给UIViewController添加了图中的几个属性,那么如何实现?其实是使用@dynamic 来动态添加的。 (即运行时Runtime)代码:1.创建Person类#import @interface Person :NSObject@propert原创 2016-04-15 14:35:22 · 7413 阅读 · 0 评论 -
NSTimer 不准时,使用GCD定时器代替的方法
使用NSTimer 常常会不准时,因为它被添加到RunLoop,而RunLoop要处理的事情比较多,包括source,timer,observer,所以时间上总是偏差也是正常.那么如果对时间要求比较严格的话,可以使用GCD定时器代替.因为GCD定时器不受RunLoop影响.#import "ViewController.h"@interface原创 2016-04-11 09:10:24 · 3929 阅读 · 1 评论 -
MJExtension底层实现原理简单剖析
最简单的字典首先,从最简单的字典开始.NSDictionary *dict = @{ @"name" : @"Jack", @"icon" : @"lufy.png", @"age" : @"20",转载 2016-04-14 11:52:17 · 4471 阅读 · 0 评论 -
[self presentViewController:vc animated:YES completion:nil]的相互引用问题
在vc1 presentViewController:vc2 时,vc1 和vc2会相互持有,就是说vc1 和vc2 会相互引用,此时切换了rootViewController,但是vc1和vc2必然不会销毁。原创 2016-02-01 17:10:13 · 3457 阅读 · 0 评论 -
block使用小结、在arc中使用block、如何防止循环引用(zz)
本文为摘录 原文地址http://blog.sina.com.cn/s/blog_8c87ba3b0101m599.htmlBlock简介(copy一段)Block作为C语言的扩展,并不是高新技术,和其他语言的闭包或lambda表达式是一回事。需要注意的是由于Objective-C在iOS中不支持GC机制,使用Block必须自己管理内存,而内存管理正是使用Block原创 2016-02-02 11:12:22 · 287 阅读 · 0 评论 -
.xcodeproj目录中各文件作用及SVN/Git同步
在iOS多人协同开发时,一般会使用版本管理工具,比如SVN/Git。 经常的,在提交修改的时候,除了我们自己主动修改的.h、.m和资源文件之外,还会出现一些莫名其妙的文件,在.xcodeproj里面,如下图: .xcodeproj是项目文件,包含项目配置文件,这是很多人都知道的。然而,.xcodeproj里面的各个文件都有什么用呢?提交版本时,要不要提交这些文件/目录?下面总结一下原创 2016-03-23 18:35:57 · 528 阅读 · 0 评论 -
label 文字顶格 或者紧贴最下面
// 下面两个方法是NSString 的分类对象方法- (void)topAlignment{ CGSize size = [self.text sizeWithAttributes:@{NSFontAttributeName:self.font}]; CGRect rect = [self.text boundingRectWithSize:CGS原创 2016-02-23 15:56:00 · 3359 阅读 · 0 评论 -
setNeedsDisplay和setNeedsLayout 区别 layoutSubviews 和drawRect被调用时机
1,UIView的setNeedsDisplay和setNeedsLayout方法 首先两个方法都是异步执行的。而setNeedsDisplay会调用自动调用drawRect方法,这样可以拿到 UIGraphicsGetCurrentContext,就可以画画了。而setNeedsLayout会默认调用layoutSubViews, 就可以 处理子视图中的一些数据。原创 2016-03-24 09:48:00 · 621 阅读 · 0 评论 -
一键替换整个工程下面某个字符串或者其他
点击find 替换为replace1.输入框里面输入你想要一键替换的字符串,一般可能是一些常用的宏,比如我图片上的一个宏定义,"Any"字样表示括号里面的为任意字符串,你可以点击那个搜索的图片选择其他含义的东西.2.在搜索图片的下面 有一个"in Lottery"字样左边的图片点击后可以选择你想要修改的目录3.输入你想替换的字符串(如果你想做的是删除,那么为空即可);4.点原创 2016-04-06 18:35:02 · 487 阅读 · 0 评论 -
手势的3个混淆属性 cancelstouchesinview delaystouchesbegan delaystouchesended
* 本节介绍tap的3个弄不太林清并且容易混淆的属性: cancelsTouchesInView/delaysTouchesBegan/delaysTouchesEnded * (0)首先要知道的是 1.这3个属性是作用于GestureRecognizers(手势识别)与触摸事件之间联系的属性。实际应用中好像很少会把它们放到一起,大多都只是运用手势识原创 2016-03-15 09:24:15 · 1545 阅读 · 0 评论 -
禁掉UITextField的粘贴功能
在有些输入框中,我们并不希望用户采用粘贴的方式去实现输入,textFiled并没有直接提供属性用于禁止,所以我们采用重写下面这个方法实现禁用功能-(BOOL)canPerformAction:(SEL)action withSender:(id)sender { if (action == @selector(paste:)) { return原创 2016-04-12 13:52:47 · 1073 阅读 · 0 评论 -
常驻线程的创建--线程不死之谜
主线程不死是因为主线程里面有一个RunLoop,RunLoop里面有一个do while死循环,保证了程序的不退出 那么如果我们有一个需求,需要一直在后台进行某个耗时操作,比如检查联网状态,比如扫描用户的某些行为等等.这时候肯定要在子线程进行,如果能保证一个子线程的不死,就能避免频繁的创建与销毁线程. 方法: 模仿主线程不死的操作1.创建并强引用线程2.往该线程里添加原创 2016-04-13 14:59:26 · 5061 阅读 · 0 评论 -
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 评论 -
为什么不要在category中重写一个类原有的方法
理由如下:1、category没有办法去代替子类,它不能像子类一样通过super去调用父类的方法实现。如果category中重写覆盖了当前类中的某个方法,那么这个当前类中的原始方法实现,将永远不会被执行,这在某些方法里是致命的。(ps:这里提一下,+(void)load方法是一个特例,它会在当前类执行完之后再在category中执行。)2、同时,一个category也不能可靠的覆盖原创 2016-04-27 10:13:24 · 4348 阅读 · 0 评论 -
读SDWebImage源码获取的知识点
1.NSDta (ImageContentType) 这个分类就一个方法+ (SDImageFormat)sd_imageFormatForImageData:(nullableNSData *)data { if (!data) { returnSDImageFormatUndefined; }原创 2017-04-18 14:02:00 · 491 阅读 · 0 评论