自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 汇编语言入门教程

看了还不错,推荐:http://www.ruanyifeng.com/blog/2018/01/assembly-language-primer.html

2020-07-20 10:56:59 166

原创 从砸壳后的ipa中获取头文件信息

1.首先要安装class-dump下载地址:http://stevenygard.com/projects/class-dump/在页面中选择class-dump-3.5.dmg  下载即可下载成功得到:class-dump-3.5.dmg ,双击打开即可见 class-dump。打开mac上的终端,输入:open /usr/local/bin即可在finder

2017-03-31 20:32:43 2655 1

原创 关于statusbar

改变status的外观可以使其ui与风格保持一致。例如,在所在的viewcontroller中重写如下方法:- (UIStatusBarStyle)preferredStatusBarStyle { if (self.bool==YES) { return UIStatusBarStyleDefault; }else{ return UISt

2015-12-16 17:25:46 464

原创 在新的ui约束下对旧系统的支持

在iOS(7.1)iphone4上约束好的控件,莫名下移了88个点,也许是忘了在viewdidload中添加如下代码:self.edgesForExtendedLayout = UIRectEdgeNone; self.extendedLayoutIncludesOpaqueBars = YES; self.automaticallyAdjustsScrollV

2015-12-07 18:04:35 351

原创 关于textfield重绘光标使其显示正常

在设置textfield支持密码显示风格的时候,切换显示的情况下,会导致明文显示后多出空白区域,现通过重绘光标使其位置正常。NSString *tmpString; ...change the secureTextEntry property tmpString = self.text; self.text = @" "; self.text = tmpString

2015-12-02 16:20:07 742

原创 局部变量的强指针破解循环保留

排查循环保留的方法有多种。例如用关联对象去监听,或查看相应对象等等。有种在block中的循环保留,是因为self引用了block,block引用了self。解决方法可以在block外定义一个弱引用变量,在block内使用。若self可能会被释放,为了在block中引用self,需要在block中定义一个对self的弱引用的强引用,保证self不释放,同时block结束,强引用释放掉,无循环保留

2015-11-19 17:10:33 435

原创 线程死锁浅析

情形1:dispatch_sync(dispatch_get_main_queue(), ^{ NSLog(@"不会执行"); });如果在主线程添加这段代码,即同步执行添加到主队列的block。这个函数会等block执行完毕返回主线程,再继续执行下面的代码,而block要等主线程返回才会执行,所以循环等待造成死锁。如果改成异步就可以了,因为当前主线程的一次ru

2015-07-01 14:28:19 725

转载 关于Github

xCode默认的是由源代码管理工作Git,Android Studio内置的也有,之前写过两篇关于Window托管Android代码到GitHub的文章,一直想写篇关于Mac上托管代码的到文章,今天终于有时间写写,xCode中默认带有Git这种行为确实很赞,对于习惯于Git的人是非常舒适的,一般打开xCode在第三项可以选择迁出已经存在的项目,因此如果需要修改GitHub上的代码或者是公司协同开发

2015-06-04 15:25:24 366

原创 ios8 push无缝隐藏navibar和statusbar

如下代码效果不错:- (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; [self.navigationController setNavigationBarHidden:YES animated:YES]; }- (void)viewWillDisappear

2015-05-27 18:01:22 1396

转载 iOS不规则控件的点击事件

我们有时候会碰到这样的需求,比如我们某个菜单是圆形的,或者某个菜单是环形的,由于一些情况普通用户很少能感知到,可能导致我们对非矩形控件的事件处理都按照矩形的区域来处理了,虽然这样的实现也没有问题,但是如果有一些极端的不规则控件出现的时候,可能矩形的处理区域就无法满足需求,我们就需要一种更加精确的处理方式,来决定我们的事件到底分发给哪个subview。差不多2年前的时候,国内很多TabBar

2015-05-23 14:41:30 824

转载 ios的hitTest方法以及不规则区域内触摸事件处理方法

在正常的使用场景中,我们处理了比较多的矩形区域内触摸事件,比如UIButton、UIControl。一般来说,这些控件的图形以及触摸区域都是矩形或者圆角矩形的。但是在一些特殊应用场景中我们有时不得不面对这样一种比较严苛的需求,比如要求程序只对某个圆形、五角形等非常规区域的点击事件进行处理,这就需要花点功夫了。本文以圆形为例子来介绍此类场景的处理方法。先看下面一张图(附图1),我们的目标是实

2015-05-23 14:10:27 657

原创 关于NSNotification和NSTimer的观点

1.通知就没有用到线程,通知就在发送的调用栈上直接就调用了。2.你在哪个线程postNotification: 就在哪个线程执行3.跟在哪注册没关系4.同步和异步从概念上只是设计模式,不要和线程和阻塞的概念弄混了5.NSTimer,NSNotificationCenter都是异步6.保证接收方的回调都在主线程里面执行啊7.你可以想象下Notification的实现就是很简单

2015-05-20 16:33:06 377

原创 属性化字符串在uilabel上的使用

很多控件其实都支持属性化字符串的,比如uilabel。NSMutableAttributedString *attributedStr = [[NSMutableAttributedString alloc]initWithString:@"内容覆盖国内外突发新闻事件、体坛赛事等。"]; NSMutableParagraphStyle *mutParaSty = [[NSM

2015-05-19 15:20:44 625

原创 AutoLayout之tableview、textview

这里说的是在Storyboard中构建布局。在一个uiviewcontroller的view中拖进一个uiview和一个uitableview利用自动布局的时候,tableview可能会莫名其妙的在最上面出现空白。原因是你的约束不合适,虽然说没有任何约束警告,但是如果你尝试另外一种约束方式,问题就奇妙地得到解决了。这种约束方式就是把重心方法子视图之间的思想,也就是uiview和tablev

2015-05-19 14:30:42 745

原创 storyboard自定义视图控制器切换

引用了一本国外编程书上的代码:#import @interface CustomSegue : UIStoryboardSegue@end#import "CustomSegue.h"@implementation CustomSegue- (void)perform{ UIViewController *src = (UIViewController *)self.

2015-05-17 19:23:19 608

原创 一种观察对象释放的关联引用用法

关联引用的参数对象的释放取决于与它关联的那个对象的释放。建立一个观察类:#import const char kWatcher;@interface Watcher : NSObject@end#import "Watcher.h"@implementation Watcher- (void)dealloc{ NSLog(@"The thing I was wat

2015-05-17 16:45:53 734

原创 分类添加属性之关联引用

分类是不能合成属性的,因为合成属性会生成对应的实例变量,而分类是不允许添加实例变量的(实例变量所在内存区域已初始化为不可更改,无法在动态运行时修改之)。虽然不能增加实例变量,但是添加属性还是可以的,只不过需要自己在分类中实现get和set方法,同时标记属性为动态获取。其中一种方法叫做关联引用,实现了用存取器来访问属性,当然实际上并没有实例变量,所以本质上只不过是增加了两个方法而已。首先

2015-05-17 15:14:12 1143

原创 storyboard创建的:设置tabbar的item选中状态的颜色和图片

写一个继承自UITabBarController的类。添加如下代码:- (void)viewDidLoad { [super viewDidLoad]; self.tabBar.tintColor = [UIColor CMColor];//设置选中颜色 self.view.backgroundColor = [UIColor whiteColor];//防止pus

2015-05-13 16:58:10 2324

原创 彻底分析block中的循环引用

我做了一个被push到的controller,pop的时候,controller会释放,解析详见注释,欢迎批评指正!#import "AnimaViewController.h"@interface AnimaViewController ()@property (nonatomic, strong) UIView *view1;@property (nonatomic, strong

2015-05-10 19:43:48 1934

转载 block需要注意的细节

一,前言在前文《深入浅出Cocoa多线程编程之block与dispatch quene》中我介绍了 block 的一些基本语法以及如何和 GCD 结合的使用示例。block 是在 iOS 4 中引入的新特性,它和 C++ 11 中的 lamba 表达式概念相似,有时候也被称为闭包。经过一段时间的使用,我发现要用对用好 block 还是有不少需要注意的地方,今天就来八一八这些值得注意的事

2015-05-10 18:46:08 376

原创 block并行编程与线程同步

block可用于并行编程,线程同步多用信号量来实现,保证执行完一个block再执行下一个block,当所有block都执行完毕后,再利用group,通知执行后面的代码,使用wait(阻塞线程),或notify(不阻塞线程)等待执行结束后再继续。#import #import "AppDelegate.h"static volatile BOOL flag = NO;//一个定义为v

2015-05-10 17:02:49 619

原创 绘制字符串与图像

借鉴于斯坦福课程.h#import @interface DrawingView : UIView@property (nonatomic) NSInteger rank;@property (nonatomic, strong) NSString *suit;@property (nonatomic) BOOL faceUp;- (void)pinch:(UIPinchG

2015-05-09 20:04:04 405

原创 代码研究

总结一下这些方法,比较杂,长期更新,不断进步。- (void)loadView{ [super loadView];//此处必须调用父类。用IB初始化时候不用重写这个方法,不用ib时,此方法不要调用父类。 NSLog(@"loadView");}如果父类调用的自己的方法,在其子类中实现了,那么父类会直接调用子类方法,无论子类是否调用自己的方法。至于是否调用父类的实现,取决

2015-05-09 19:59:58 319

原创 NSOperation的继承实现

/* 1.线程同步:原子操作,条件锁,递归锁,@synchronized。NSCondition:同步执行的顺序。 2.线程间通信: 在主线程做事:-performSelectorOnMainThread 在子线程做事:-performSelectorInBackground 在指定线程做事:-performSelector: onThread: withObject: wai

2015-05-09 19:30:59 509

原创 NSURLSession下载图片的简单例子

NSURLSession从iOS7开始生效,用于网络编程。例如下载一个图片来显示。NSURL *url = [NSURL URLWithString:@"http://upload.ct.youth.cn/2014/1219/1418933895342.jpg"]; NSURLRequest *reque = [NSURLRequest requestWithURL:url];

2015-05-09 19:08:39 1913 1

原创 UIDynamicBehavior动力学动画效果

引用斯坦福视频中的例子.h#import @interface MyDynamicBehavior : UIDynamicBehavior- (void)addItem:(id)item;- (void)removeItem:(id)item;@end.m#import "MyDynamicBehavior.h"@interface MyDynamicBehavior

2015-05-09 19:01:25 425

原创 多选一按钮的一个解决方法

导航栏许多按钮,点一个其他按钮状态跟着变化,被点按钮为选中状态。说一下我的方法,觉得实现得一般,期待大家提出一个更好的方案。- (IBAction)titleButtonTap:(UIButton *)sender { UIButton *btn = self.btnArray.firstObject; if (btn.tag != sender.tag) {

2015-05-06 16:07:53 1886

原创 混合两个有序int数组到另一个有序数组并去重

题目:两个有序数组a和b,混合之,放在另一个数组c中,使得c也是有序数组(升序),去除重复的项。虽然觉得不是很简便,但代码如下:int merge_array (int *a , int *b, int *c, int n1, int n2){ if (n1 < 0 || n2 < 0) { return -1; } int i = 0;

2015-05-06 01:05:01 982

转载 iPhone消息推送机制实现与探讨

最近两天在研究ios的消息推送机制。研究这个东西,还是充满兴趣的。Push的原理:Push 的工作机制可以简单的概括为下图图中,Provider是指某个iPhone软件的Push服务器,这篇文章我将使用.net作为Provider。APNS 是Apple Push Notification Service(Apple Push服务器)的缩写,是苹果的服务器。

2015-05-05 01:10:18 365

转载 IOS多线程编程系类

目录:IOS多线程编程之NSThread的使用IOS多线程编程之NSOperation和NSOperationQueue的使用IOS多线程编程之Grand Central Dispatch(GCD)介绍和使用IOS多线程编程之NSThread的使用1、简介:1.1 IOS有三种多线程编程的技术,分别是:1.、NSThread2、Coc

2015-05-05 01:06:36 381

转载 iOS应用启动速度

http://ke.indiebros.com/2012/08/20/ios-app-launch-time-optimization/很多app的开发者都不重视app的启动速度,这对于碎片化使用情景的用户来说,简直是灾难。iOS应用的启动速度应用启动时,会播放一个放大的动画。iPhone上是400ms,iPad上是500ms。最理想的启动速度是,在播放完动画后,用户就可以

2015-05-04 23:50:40 432

转载 (译)KVO的内部实现

KVO是实现Cocoa Bindings的基础,它提供了一种方法,当某个属性改变时,相应的objects会被通知到。在其他语言中,这种观察者模式通常需要单独实现,而在Objective-C中,通常无须增加额外代码即可使用。 概览这是怎么实现的呢?其实这都是通过Objective-C强大的运行时(runtime)实现的。当你第一次观察某个object时,runtime会创建一

2015-05-04 23:42:01 340

原创 The Podfile of CocoaPods error

/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.37.0/lib/cocoapods/user_interface/error_report.rb:13:in `report': incompatible character encodings: UTF-8 and ASCII-8BIT (Encoding::CompatibilityError)from

2015-05-04 16:48:24 445

原创 关于HTTP

HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤:(1)    建立TCP连接在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。HTTP是比TCP更高层次的应用层协

2015-04-23 15:12:15 456

原创 http:nsurlconnection同步与异步

NSUrlConnection有同步和异步请求http链接的方法。///http NSURLConnection sendAsynchronousRequest- (void)httpAsynchronousRequest{ NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"]; NSString *post =

2015-04-23 13:01:25 458

转载 [iOS]使用NSProxy实现消息转发机制,模拟多重继承

Objective-C不支持多重继承,但是我们可以使用NSProxy的消息转发机制,来转发可由其它类的对象处理的任务,达成同样的目的。Xcode的Documentation中有示例(搜索ForwardInvocation,在Sample Code类别中),如下:/* File: main.m Abstract: T

2015-04-21 18:12:31 562

原创 内存缓存

1,首先回忆一下文件目录结构Documents:用来存放用户自己生成的文件、数据,或应用运行必须的数据库之类的。iCloud会同步和恢复。Library/Preferences:存放用户偏好设置,例如NSUserDefault数据。iCloud不会同步和恢复。重启不删除。Library/Caches:存放用户缓存数据,例如网络缓存、下载的东西等等,iCloud不会同步和恢复。重启不删除

2015-04-18 16:38:17 388

转载 SDWebImage缓存图片的机制

SDWebImage是一个很厉害的图片缓存的框架。既ASIHttp+AsyncImage之后,我一直使用AFNetworking集成的UIImageView+AFNetworking.h,但后者对于图片的缓存实际应用的是NSURLCache自带的cache机制。而NSURLCache每次都要把缓存的raw  data 再转化为UIImage,就带来了数据处理和内存方面的更多操作。具体的比较在这

2015-04-18 13:35:34 342

原创 Fibonacci数列求任意项

斐波那契数列,0.618的增长率,很神奇的黄金分割率。多学习算法吧,一个简单的算法想不起来的话会被鄙视,尽管这其实微不足道。。//为了防止溢出,使用long double 类型。//直接用公式算,最快。longdouble numbers (int n) {   long double result =0.0;    result = (powl((sq

2015-04-15 00:46:50 478

转载 NSNotification、delegate和KVO的区别

NSNotification、delegate和KVO的区别转载▼1.效率肯定是delegate比nsnotification高。2. delegate方法比notification更加直接,最典型的特征是,delegate方法往往需要关注返回值, 也就是delegate方法的结果。比如-windowShouldClose:,需要关心返回的是yes还是no。所以de

2015-04-08 23:18:16 315

空空如也

空空如也

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

TA关注的人

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