随笔分类 -  iOS笔记

摘要:在编程过程中,我们经常会用到for循环,而且for循环要做很多相关的任务。比如:for (i = 0; i < count; i++) { //do a lot of work here. doSomething(i); }如果for循环中处理的任务是可并发的,显然放到一个线程中处理是很慢的,GCD提供两个函数dispatch_apply和dispatch_apply_f,dispatch_apply是用于Block的,而dispatch_apply_f可以用于c函数,它们可以替代可并发的for循环,来并行的运行而提高执行效率。dispatch_queue_t queue = di... 阅读全文
posted @ 2013-12-10 15:27 Story Of My Life 阅读(537) 评论(0) 推荐(0) 编辑
摘要:可以在Building Phases中Compiling Sources中进行Compile Flag的设置:1、不用arc来编译文件 -fno-objc-arc2、强制取消一个文件的编译警告 -w 阅读全文
posted @ 2013-11-26 16:05 Story Of My Life 阅读(210) 评论(0) 推荐(0) 编辑
摘要:http://www.cnblogs.com/lixiaohui-ambition/archive/2012/08/21/2649052.html 阅读全文
posted @ 2013-11-19 19:15 Story Of My Life 阅读(191) 评论(0) 推荐(0) 编辑
摘要:console里可以很方便的查看任何view的层级:po [[self view] recursiveDescription] 阅读全文
posted @ 2013-08-08 19:19 Story Of My Life 阅读(184) 评论(0) 推荐(0) 编辑
摘要:需要在自定义类中实现NSCode的两个方法,同时的声明实现协议。- (id)initWithCoder:(NSCoder *)coder{ if (self = [super init]) { _name = [coder decodeObjectForKey:@"name"]; _signatureURL = [coder decodeObjectForKey:@"signatureURL"]; } return self;}-(void)encodeWithCoder:(NSCoder *)coder{ [coder encodeObje... 阅读全文
posted @ 2013-07-03 16:15 Story Of My Life 阅读(282) 评论(0) 推荐(0) 编辑
摘要:根据文字内容长度动态调整label和cell的高度1、首先获得文字信息所需要的sizeCGSize titleSize = [question.titlesizeWithFont:[UIFontsystemFontOfSize:17] constrainedToSize:CGSizeMake(209, 1000) lineBreakMode:UILineBreakModeWordWrap];其中fontsize要和label.text.size保持一致,另外可以限制size的大小2、一定要将label的numberOfLine设为03、最后将label的height设为titleSize.he 阅读全文
posted @ 2013-06-08 00:38 Story Of My Life 阅读(2060) 评论(0) 推荐(0) 编辑
摘要:- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;{ NSLog(@"Did start loading: %@ auth:%d", [[request URL] absoluteString], _authenticated); if (!_authenticated) { _authenticated = NO; ... 阅读全文
posted @ 2013-05-17 13:22 Story Of My Life 阅读(1894) 评论(0) 推荐(0) 编辑
摘要:在项目目录里git initgit add.git commit-m“Initial Commit” 阅读全文
posted @ 2013-05-14 12:54 Story Of My Life 阅读(131) 评论(0) 推荐(0) 编辑
摘要:- (void)setHighlighted:(BOOL)highlighted animated (BOOL)animated{ [super setHighlighted:highlighted animated:animated]; if(highlighted) { [(UIButton *)self.accessoryView setHighlighted:NO]; }}- (void)setSelected:(BOOL)selected animated:(BOOL)animated{ [super setSelected:selected a... 阅读全文
posted @ 2013-05-02 22:07 Story Of My Life 阅读(280) 评论(0) 推荐(0) 编辑
摘要:要想利用HLS来实现视频的在线播放,就得需要将一个完整的视频文件切割成多个ts视频流,然后利用m3u8的索引文件来播放。在Mac下,苹果提供了streamingTools的工具,里面有mediafilesegmenter和mediastreamsegmenter来分别实现文件和直播流的切割,一行命令直接就可以将输入的原始视频文件导出成几个ts和索引文件,直接就可以用了。但是一般服务器都是基于linux的,要想在linux下实现同样的切割,着实费了一番功夫。网上也找了好多相关的资料,基本是利用开源的ffmpeg和segmenter工具来实现,但是这搭建这个环境的过程是曲折的,编译这些工具的时候会 阅读全文
posted @ 2013-04-07 21:25 Story Of My Life 阅读(32777) 评论(4) 推荐(0) 编辑
摘要:重写drawRect后,设置layer的属性会失效,可能在drawRect中还会对layer进行改变所以要设定view的边框形状有两种方法:1、重写drawRect,用UIBezierPath等画出圆角矩形或者圆,然后addClips,将边框包裹住,最后要注意将view的背景色设置为透明。2、不重写drawRect,初始化中改变view.layer的属性,可以变为圆角矩形,圆,还能设置阴影,边框等,但是要注意layer的maskToBounds和view的clipsToBounds属性,保证只在bounds内绘图。 阅读全文
posted @ 2013-03-25 11:53 Story Of My Life 阅读(232) 评论(0) 推荐(0) 编辑
摘要:和delegate一样,KVO和NSNotification的作用也是类与类之间的通信,与delegate不同的是1)这两个都是负责发出通知,剩下的事情就不管了,所以没有返回值;2)delegate只是一对一,而这两个可以一对多。这两者也有各自的特点。1)KVO的使用:被观察者发出 addObserver:forKeyPath:options:context: 方法来添加观察者- (void)addObserver:(NSObject *)anObserver forKeyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions) 阅读全文
posted @ 2013-03-07 21:16 Story Of My Life 阅读(2592) 评论(0) 推荐(0) 编辑
摘要:转载自:http://www.cnblogs.com/mybkn/articles/2831190.html 阅读全文
posted @ 2013-02-23 21:18 Story Of My Life 阅读(173) 评论(0) 推荐(0) 编辑
摘要:#import "Abc.h"@implementation Abc+ (Abc *)sharedInstance{ static Abc *abc = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ abc = [[Abc alloc] init]; }); return abc;}@end这是Objective-c的singleton写法。 阅读全文
posted @ 2013-02-18 16:12 Story Of My Life 阅读(121) 评论(0) 推荐(0) 编辑
摘要:Lazy Instantiation即被动初始化,当需要用到某个property时,再在此property的getters中进行初始化,例如- (Foo *)aFoo{ if (!_aFoo) { _aFoo = [[Foo alloc] init]; } return _aFoo;}Designated Initailization即指定初始化方法,一般为默认初始化(init),有时候会自己定义指定初始化方法,这时必须重写默认初始化init返回nil,以防止初始化失败,并在自定义初始化方法中调用[super init],如下- (id)initWithCoun... 阅读全文
posted @ 2013-02-17 15:50 Story Of My Life 阅读(501) 评论(0) 推荐(0) 编辑
摘要:1、一次性修改一个scope里的变量名:点击该变量,出现下划虚线,然后command+control+E激活所有相同变量,然后进行修改。2、删除一个词:option+delete 删除一句话:command+delete3、快捷搜索:先点亮想要搜索的词,然后command+E将该次放入剪贴板,然后command+G来向下遍历该词,shift+command+G向上遍历。4、新建tab:command+T tab间切换:command+shift+[ 或 ] 前后两行交换:command+option+[ 或 ] 不同窗口间切换:command+`5、快捷open:command+shi... 阅读全文
posted @ 2013-01-31 20:35 Story Of My Life 阅读(12884) 评论(0) 推荐(3) 编辑
摘要:1、只有alloc, init, copy, mutablecopy, new和retain才算拥有一个对象,才有资格release。weak相当与assign,但是多了清0作用,strong相当于retain。2、方法中局部变量的alloc后,由于要将指针传递出去,所以无法在方法内和方法外release,所以用autorelease来解决这个问题。3、NSMutableArray每当add或remove一个对象时,会自动retain和release一次。4、stringWithFormat:默认返回autorelease类型,或者不用手动release的初始化都会默认返回autoreleas 阅读全文
posted @ 2013-01-31 17:52 Story Of My Life 阅读(875) 评论(0) 推荐(0) 编辑
摘要:一、scrollView中有一个有用的属性:@property(nonatomic) BOOL scrollsToTop;即点击status bar后会滚动到最顶部,尤其在tableview时好用,当内容很多时,滑动也很费劲,时常需要方便的回到最顶部。其官方解释是这样的:scrollsToTopA Boolean value that controls whether the scroll-to-top gesture is effective@property(nonatomic) BOOL scrollsToTopDiscussionThe scroll-to-top gesture is 阅读全文
posted @ 2013-01-29 21:56 Story Of My Life 阅读(1486) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2013-01-26 22:25 Story Of My Life 阅读(188) 评论(0) 推荐(0) 编辑
摘要:1、frame、bounds、transform...以其superView为参照系,superView左上角作为(0,0):view.frame = (origin,size) 为自身左上角相对superView左上角的坐标,用于调整自身在superview中的位置。view.center为view中心点坐标以自身为参照系,自身左上角为(0,0):view.bounds = (origin, size) ,origin =(0,0)用于调整当前view内的subview的位置。contentOffset为自身显示在屏幕内左上角相对自身整体的坐标。view.transform:scale是保持 阅读全文
posted @ 2013-01-26 13:55 Story Of My Life 阅读(144) 评论(0) 推荐(0) 编辑