iOS
文章平均质量分 65
fnxiao
这个作者很懒,什么都没留下…
展开
-
block底层实现原理
#include"stdio.h"int main(){ void (^blk)(void) = ^{printf("Block.\n");}; blk(); return 0;}clang -rewrite-objc main.m#ifndef __OBJC2__#define __OBJC2__#endifstruct objc_sele原创 2015-03-05 00:51:08 · 2253 阅读 · 0 评论 -
ios 内存使用陷阱
在iphone开发过程中,代码中的内存泄露我们很容易用内存检测工具leaks 检测出来,并一一改之,但有些是因为ios 的缺陷和用法上的错误,leaks 检测工具并不能检测出来,你只会看到大量的内存被使用,最后收到didReceiveMemoryWarning,最终导致程序崩溃。以下是开发过程中遇到的一些问题和网上的一些资料,总结了一下:一、[UIImage imageNamed:转载 2013-06-02 14:58:56 · 841 阅读 · 0 评论 -
旧工程适配iOS 6和iPhone 5的一些故事
http://www.dapps.net/dev/iphone/old-project-ios-6-iphone-5-1.html转载 2013-05-24 17:06:16 · 639 阅读 · 0 评论 -
UITableView底部FooterView实现上拉刷新
@interface FooterViewTestViewController : UIViewController{// 表格数据数组,因为是演示代码,直接定义为数组NSMutableArray *tableData; // 下拉时显示的数据NSMutableArray *tableMoreData; // 数据数量NSUInteger dataNumber;转载 2013-04-28 20:24:58 · 944 阅读 · 0 评论 -
iOS--kxmovie之FFmpeg编译和使用
FFmpeg编译我用的编译环境:OS X 10.10.1 , Xcode 6.1.1 , ffmpeg 2.5.3方法一(未成功): 1)git clone git://github.com/kolyvan/kxtorrent.git kxmovie 2)配置编译ffmpegcd kxmoviegit submodule update --ini原创 2015-01-26 15:26:54 · 7863 阅读 · 13 评论 -
关于IOS的Autolayout特性的理解以及使用
前段时间时间总是在纠结这个ios的Autolayout的布局问题。总感觉Apple这样做很麻烦,感觉Autolayout的代码写起来很别扭。半个眼都不想去看那些代码,又臭又长。其实不然,当现在Apple发布的各个产品上市之后,设备的屏幕分辨率也有了很大的变化,iPhone4/4S是3.5寸,iPhone5是4.0寸,ipad2/new ipad/ipad4是9.7寸的,ipad mini是7转载 2013-05-31 22:10:51 · 7753 阅读 · 1 评论 -
UIAlertView的自动消失,手动消失和自定制消失
UIAlertView的消失本质其实是触发了一个dismiss事件。触发这个事件有以下两种方法:1.按钮点击,UIAlertView上如果有按钮,点击任何按钮都会触发该事件,UIAlertView消失;2.代码模拟点击[java] view plaincopyprint?[AlertObject dismissWi转载 2013-05-17 19:41:31 · 768 阅读 · 0 评论 -
移动端app设计指南--尺寸篇
转载 2013-05-19 09:26:15 · 932 阅读 · 0 评论 -
IOS沙盒详解
例子代码:https://github.com/schelling/YcDemo升级方案:IOS软件在APP STORE上升级的时候,只需把配置文件放在Document目录下,就可以。其他文件会随着版本的更新被替换掉。 IOS沙盒(sandbox)机制和文件操作(一)1、IOS沙盒机制 IOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方转载 2013-05-29 14:27:01 · 1498 阅读 · 0 评论 -
UIDiviceOrientation 和 UIInterfaceOrientation
1.UIDeviceOrientation 是机器硬件的当前旋转方向 这个你只能取值不能设置 UIInterfaceOrientation 是你程序界面的当前旋转方向 这个可以设置2.关系 3. 获得UIInterfaceOrientation方向 UIInterfaceOrientation orientation = [[UIApp转载 2013-05-31 20:29:38 · 1819 阅读 · 0 评论 -
利用NSRunLoop阻塞NSOperation线程
在使用NSOperationQueue简化多线程开发中介绍了多线程的开发,我这里主要介绍一下使用NSRunLoop阻塞线程。主要使用在NStimer定时启用的任务或者异步获取数据的情况如socket获取网络数据,要阻塞线程,直到获取数据之后在释放线程。下面是线程中没有使用NSRunLoop阻塞线程的代码和执行效果:#import @interface Task :原创 2013-09-25 11:27:39 · 1805 阅读 · 0 评论 -
NSStringCompareOptions
NSCaseInsensitiveSearch = 1, NSLiteralSearch = 2,/* Exact character-by-character equivalence */ NSBackwardsSearch = 4,/* Search from end of source string */ NSAnchoredSearch =原创 2014-05-09 11:39:57 · 12316 阅读 · 0 评论 -
beginUpdates和endUpdates---实现UITableView的动画块
我们在做UITableView的修改,删除,选择时,需要对UITableView进行一系列的动作操作。这样,我们就会用到 [tableView beginUpdates]; if (newCount0){ [tableView deleteSections:[NSIndexSet indexSetWithIndex:indexPath.sectio转载 2013-05-19 12:59:59 · 1421 阅读 · 0 评论 -
隐藏tabbar
隐藏tabbar有两种方式:1:在pushViewController之前调用[self setHidesBottomBarWhenPushed:YES];同时在viewWillDisappear调用:- (void)viewWillDisappear:(BOOL)animated { [self setHidesBottomBarWhenP转载 2013-06-21 09:16:28 · 914 阅读 · 0 评论 -
xcode-select – 更改默认Xcode
如果你的电脑中有几个xcode版本,比如一个xcode5.1.1,一个xcode6-beta, 当你打开工程的时候,通常会有一个默认配置,或者使用terminal命令行操作,需要选择使用xcode的不同版本,怎么更改这个配置呢? 请看下文:It’s not uncommon developers to have multiple versions of Xcode installed.转载 2015-12-01 09:46:52 · 9535 阅读 · 0 评论 -
PRPDebug
#ifdef PRPDEBUG#define PRPLog(format...) PRPDebug(__FILE__, __LINE__, format)#else#define PRPLog(format...)#endif#import void PRPDebug(constchar *fileName, int line原创 2015-07-19 04:46:07 · 609 阅读 · 0 评论 -
iOS URL缩短
@interface ViewController ()@property (nonatomic,retain)NSMutableData *data;@end@implementation ViewController- (void)viewDidLoad { [superviewDidLoad];原创 2015-08-25 15:40:04 · 1133 阅读 · 0 评论 -
associative
id _object_get_associative_reference(id object, void *key) { id value = nil; uintptr_t policy = OBJC_ASSOCIATION_ASSIGN; { AssociationsManager manager; AssociationsHashMap转载 2015-07-28 05:44:21 · 932 阅读 · 0 评论 -
UIImage+ImageEffects
@import UIKit;@interface UIImage (ImageEffects)- (UIImage *)applyLightEffect;- (UIImage *)applyExtraLightEffect;- (UIImage *)applyDarkEffect;- (UIImage *)applyTintEffectWithColor:(UIColor *)tin原创 2015-07-26 16:43:25 · 3728 阅读 · 0 评论 -
NSCache
可怜的 NSCache 一直处于 NSMutableDictionary 的阴影之下。就好像没有人知道它提供了垃圾处理的功能,而开发者们却费劲力气地去自己实现它。没错,NSCache 基本上就是一个会自动移除对象来释放内存的 NSMutableDictionary。无需响应内存警告或者使用计时器来清除缓存。唯一的不同之处是键对象不会像 NSMutableDictionary 中那样被复制,转载 2015-04-28 17:15:06 · 624 阅读 · 0 评论 -
无状态协议
中文名无状态协议外文名Stateless Protocol类 型名词领 域计算机协议的状态是指下一次传输可以“记住”这次传输信息的能力.http是不会为了下一次连接而维护这次连接所传输的信息,为了保证服务器内存.比如客户获得一张网页之后关闭浏览器,然后再一转载 2015-04-30 10:24:17 · 1013 阅读 · 0 评论 -
怎样用代码方式退出IOS程序
原文地址:http://blog.csdn.net/holydancer/article/details/7484579Q:怎样用代码方式退出IOS程序 A:没有提供用于正常退出IOS应用的API。 在IOS中,用户点击Home键来关闭应用。你的应用应该符合以下条件:它不能自行调用方法,而应采取措施与用户交互,转载 2013-06-21 09:39:45 · 870 阅读 · 0 评论 -
实现iOS长时间后台的两种方法:Audiosession和VOIP
我们知道iOS开启后台任务后可以获得最多600秒的执行时间,而一些需要在后台下载或者与服务器保持连接的App是如何突破600秒的限制的呢?像网易公开课就可以在后台持续下载,优酷也可以在后台持续缓存,这是怎么做到的呢?一般来说,要实现iOS长时间后台运行,需要声明VOIP、Audio或GPS。 Audiosession 实现方法很简单,就是在后台一直播放一个无声的音乐文件,这样就转载 2013-06-02 15:48:20 · 1194 阅读 · 0 评论 -
iOS 内存管理之 Automatic Reference Counting (ARC)
从OS X Lion 和 iOS 5 ,苹果引入了自动引用技术机制,让编译器来原创 2014-11-05 23:02:59 · 810 阅读 · 0 评论 -
判断selector有几个参数
//判断selector有几个参数staticNSUInteger SelectorArgumentCount(SEL selector){ NSUInteger argumentCount = 0;//sel_getName获取selector名的C字符串 const char *selectorStringCursor =sel_getName(原创 2015-01-21 18:17:42 · 1903 阅读 · 0 评论 -
NSValueTransformer
主要用于数据类型的变换(如Model?View等),变换可以是单向或双向的。◆NSValueTransformer是一个抽象类,所有的类型变换都在NSValueTransformer的子类中定义。◎NSValueTransformer类的已实装方法管理值变换的名字和值变换对象的mapping方法。> +valueTransformerNames 返回所有注册的子类转换器转载 2015-01-22 15:23:45 · 4170 阅读 · 0 评论 -
KVC
KVC 与KVOKVC 是NSKeyValueCoding 的缩写,它是Foundation Kit 中的一个NSObject 的Category,作用你可以类比JAVA 中的反射机制,就是动态访问一个对象中的属性。KVC 在解析key 的字符串的时候,是会比你正常调用setter、getter 要慢的,而且编译器无法在编译器对你的方法调用做出检查(因为你的属性名都是字符串,只有运行时才会知道原创 2015-01-22 13:33:12 · 982 阅读 · 0 评论 -
iOS 获取视频的任意一帧
项目要求根据服务器返回的视频和秒数,生成该视频的预览图。网上一搜关键词 “iOS 视频 帧” 结果都是:iOS如何获取视频的第一帧。但是如果我不想要第一帧,要第s秒的第x帧怎么办?先贴如何获取第一帧的代码:- (UIImage*) getVideoPreViewImage{ AVURLAsset *asset = [[AVURLAsset alloc] i转载 2015-01-20 17:33:34 · 5148 阅读 · 1 评论 -
(译)KVO的内部实现
09年的一篇文章,比较深入地阐述了KVO的内部实现。KVO是实现Cocoa Bindings的基础,它提供了一种方法,当某个属性改变时,相应的objects会被通知到。在其他语言中,这种观察者模式通常需要单独实现,而在Objective-C中,通常无须增加额外代码即可使用。概览这是怎么实现的呢?其实这都是通过Objective-C强大的运行时(runtime)实转载 2015-01-20 10:17:52 · 593 阅读 · 0 评论 -
Objective-C-- id、nil、Nil、SEL、IMP、Method、Class
在Objective-C中,有一些我们之前并不熟悉但是经常见到的数据类型,比如id、nil、Nil、SEL等等。在很多文章里,我们都见过这些数据类型的介绍,但是都没有说的太清楚。这篇文章从最底层的定义开始,介绍一下这些类型到底是怎么定义的,这会帮助我们更加深入地了解Objective-C。参考:http://unixjunkie.blogspot.com/2006/02转载 2015-01-29 11:02:41 · 1607 阅读 · 0 评论 -
objc_object 、objc_class、metaclass
[0] Outline -- [1] id和Class -- [2] 动态地操作类 -- [3] 实例化[1] id和Class在Objective-C中有一个特别的数据类型作为对象标识符:id,可以指向任何类型的对象。通过 “可以指向任何类型的对象” 这一描述,猜想id实际上是指向Objective-C对象系统中的基类(继承体系中转载 2015-01-29 11:32:35 · 2766 阅读 · 0 评论 -
KVO的Block实现和Selector实现
#import typedef void(^ObserverBlock)(NSDictionary *change);@interface KVOObserver : NSObject/*block * *object:被观察者 */+ (id)observerForObject:(id)object keyPath:(NSString *)ke原创 2015-01-21 18:51:50 · 1629 阅读 · 0 评论 -
(译)Objective-C的动态特性
这是一篇译文,原文在此,上一篇文章就是受这篇文章启发,这次干脆都翻译过来。过去的几年中涌现了大量的Objective-C开发者。有些是从动态语言转过来的,比如Ruby或Python,有些是从强类型语言转过来的,如Java或C#,当然也有直接以Objective-C作为入门语言的。也就是说有很大一部分开发者都没有使用Objective-C太长时间。当你接触一门新语言时,更多地会关注基础知识,转载 2015-01-20 11:48:54 · 658 阅读 · 0 评论 -
Block
一、概述Block是C级别的语法和运行时特性。Block比较类似C函数,但是Block比之C函数,其灵活性体现在栈内存、堆内存的引用,我们甚至可以将一个Block作为参数传给其他的函数或者Block。原创 2014-05-09 18:30:49 · 954 阅读 · 0 评论 -
xCode4里面设置NSZombieEnabled
今天看到偶然间看到一篇blog,“用NSZombieEnabled解决恼人的EXC_BAD_ACCESS错误”。很实用的技巧,便拿来试验一下。原文是在XCode3里面设置的,so在4里面完全找不到地方。stackoverflow搜一下,找到如下方法。菜单里Product->EditScheme->Run->Environment Variables, 添加NSZombieE转载 2013-05-08 21:27:51 · 742 阅读 · 0 评论 -
WWDC 2012 Session笔记—— Modern Objective-C
2007年的时候,Objective-C在TIOBE编程语言排名里还排在可怜的第45位,而随着移动互联网的迅速发展和iPhone,iPad等iOS设备的广阔市场前景,Objective-C也迅速崛起,走进了开发者的视野。在最近的TIOBE排名中,Objective-C达到了惊人的第3名,可以说已经成为当今世界上一门非常重要的编程语言。而Objective-C现在主要是由Apple在负责维护了。转载 2013-05-12 14:51:08 · 914 阅读 · 0 评论 -
iOS平台内存常见问题
作为iOS平台的开发者,是否曾经为内存问题而 苦恼过?内存莫名的持续增长,程序莫名的crash,难以发现的内存泄漏,这些都是iOS平台内存相关的常见问题;本文将会详细介绍iOS平台的内存管理 机制,autorelease机制和内存的使用陷阱,这些将会解决iOS平台内存上的大部分问题,提高了程序的稳定性;1 iOS平台内存管理介绍iOS平台的内存管理采用引用计数的机制;当创建一个对象时使用a转载 2013-05-03 13:25:24 · 1124 阅读 · 1 评论 -
KVO绑定
#import typedef id (^BinderTransformationBlock) (id value);@interface KVOBinder : NSObject/* *把toObject的toKeyPath的值 和 fromObject的fromKeyPath的值 绑定。fromKeyPath变动toObject也跟着变动 *valueTransformer:自原创 2015-01-22 18:06:50 · 772 阅读 · 0 评论 -
iOS上应用如何兼容32位系统和64位系统
在苹果推出iPhone5S时,64位的应用就走到了眼前。当时就看见苹果官方资料宣布iOS7.x的SDK支持了64位的应用,而且内置的应用都已经是64位。 我记得自己刚刚接触电脑时还有16位的系统,指针的寻址范围还是16位的。当年用TurboC时,还要根据应用的大小选择是tiny模式还是其他。后来很长一段时间使用32位的模型编程,4G是牢牢记住的一个边界条件。而现在,64位走到了眼前。转载 2015-03-06 14:08:31 · 1457 阅读 · 0 评论 -
UIPopoverController的使用
UIPopoverController只能在ipad设备上面使用;作用是用于显示临时内容,特点是总是显示在当前视图最前端,当单击界面的其他地方时自动消失。UIViewController* vCtrl = [[UIViewController alloc] init];UIPopoverController* popController = [[UIPopoverControll转载 2013-05-28 15:57:46 · 951 阅读 · 0 评论