随笔分类 -  iOS开发

摘要:dispatch_semaphore 信号量基于计数器的一种多线程同步机制。在多个线程访问共有资源时候,会因为多线程的特性而引发数据出错的问题。 dispatch_queue_t queue = dispatch_get_global_queue(0, 0); dispatch_semaphore_t semaphore = dispatch_semaphore_create(1); NSMutableArray *array = [NSMutableArrayarray]; for (int index = 0; index < 100000; index++) { dispat... 阅读全文
posted @ 2014-03-14 13:47 酱酱爱 阅读(17176) 评论(0) 推荐(1)
摘要:dispathc_apply 是dispatch_sync 和dispatch_group的关联API.它以指定的次数将指定的Block加入到指定的队列中。并等待队列中操作全部完成. NSArray *array = [NSArray arrayWithObjects:@"/Users/chentao/Desktop/copy_res/gelato.ds", @"/Users/chentao/Desktop/copy_res/jason.ds", @"/Users/chentao/Desktop/copy... 阅读全文
posted @ 2014-03-13 17:38 酱酱爱 阅读(8928) 评论(0) 推荐(1)
摘要:dispatch_sync(),同步添加操作。他是等待添加进队列里面的操作完成之后再继续执行。 dispatch_queue_t concurrentQueue = dispatch_queue_create("my.concurrent.queue", DISPATCH_QUEUE_CONCURRENT); NSLog(@"1"); dispatch_sync(concurrentQueue, ^(){ NSLog(@"2"); [NSThread sleepForTimeInterval:10]; NSLog(@"3&q 阅读全文
posted @ 2014-03-13 11:44 酱酱爱 阅读(42356) 评论(1) 推荐(3)
摘要:先看段代码 dispatch_queue_t concurrentQueue = dispatch_queue_create("my.concurrent.queue", DISPATCH_QUEUE_CONCURRENT); dispatch_async(concurrentQueue, ^(){ NSLog(@"dispatch-1"); }); dispatch_async(concurrentQueue, ^(){ NSLog(@"dispatch-2"); }); dispatch_barrier_async(concu.. 阅读全文
posted @ 2014-03-13 11:26 酱酱爱 阅读(23174) 评论(1) 推荐(1)
摘要:如果想在dispatch_queue中所有的任务执行完成后在做某种操作,在串行队列中,可以把该操作放到最后一个任务执行完成后继续,但是在并行队列中怎么做呢。这就有dispatch_group 成组操作。比如 dispatch_queue_t dispatchQueue = dispatch_queue_create("ted.queue.next", DISPATCH_QUEUE_CONCURRENT); dispatch_group_t dispatchGroup = dispatch_group_create(); dispatch_group_async(dispat 阅读全文
posted @ 2014-03-12 18:43 酱酱爱 阅读(26164) 评论(1) 推荐(2)
摘要:block的定义:“带自动变量的匿名函数”(一)写法:^ void (int iAge){ NSLog(@"%d", iAge);};和C函数写法区别在于:1) :以插入符号 ^ 开始.2):没有函数名字当block声明变量时候的写法void (^blk)(int iAge)block 做函数参数时候void testFunction:(int)age complete:(void(^)(int iAge))complete{ age++; if(complete){ complete(age); } }(二)block是c语音的扩展,实际上block会被翻译成c语言的st 阅读全文
posted @ 2014-03-12 16:47 酱酱爱 阅读(1555) 评论(0) 推荐(0)
摘要:项目中如果想把异常捕获再写入文件,有个十分容易使用的库DDLog.首先导入库,在git上下载。一:在项目初始化指定全局LogLeve ,一般在xxxapp.m中staticconstint ddLogLevel = LOG_LEVEL_VERBOSE;二: - (void)applicationDidFinishLaunching:(NSNotification *)aNotification{ NSExceptionHandler *exceptionHandler = [NSExceptionHandler defaultExceptionHandler] ; exceptio... 阅读全文
posted @ 2014-03-06 00:49 酱酱爱 阅读(6708) 评论(0) 推荐(0)
摘要:NSSelectorFromString动态加载实例方法。 SEL sel = NSSelectorFromString(@"yourMethod:")//有参数 if([object respondsToSelector:sel]) { [object performSelector:sel withObject: @"test" ];//如果有两个参数,使用两个withObject:参数; } 阅读全文
posted @ 2013-08-15 16:01 酱酱爱 阅读(8414) 评论(0) 推荐(0)
摘要:Class myClass = NSClassFromString("StaticLibyClassName");StaticLibyClassName是从静态库中实例化一个Class,需要在bulid settings中的Other Linker Flags中添加“-ObjC"标识。否则myClass为nil.还有种坑爹的情况,Build Phases 中没有对应的类.m 文件,当从外部拖入文件时候,虽然勾选了 copy,编译也没有报告错误,但。。。不说了,加进对应的.m文件吧!这个是Xcode的bug 阅读全文
posted @ 2013-08-15 15:27 酱酱爱 阅读(830) 评论(0) 推荐(0)
摘要:最近遇见个Xcode的bug,搞的十分郁闷。具体现象是:程序前段时间都是好好的,可以运行,第二天开机,调试就无法进入模拟器。就连main()函数都进不了。模拟器完全挂起了。具体说来就是代码一句都没改过,工程设置也没改过,昨天走的时候好好的,今天就不行l了。尝试解决办法:1):强行关闭模拟器,在用Xcode中只打开模拟器办法,看看我的那个应用的尸体在模拟器里没。打开看到“一无所有”。2):还原模拟起,重现启动调试。问题依然存在3):删除Xcode中那些cashe文件,重复第二步,在启动调试。对不起。问题依然在。4):升级XCode到最新版本(Xcode4.6.3),当升级的时候看到升级说明文档第 阅读全文
posted @ 2013-07-16 17:42 酱酱爱 阅读(1067) 评论(0) 推荐(0)
摘要:常规办法:- (CGFloat)tableView:(UITableView *)tableViewheightForRowAtIndexPath:(NSIndexPath *)indexPath{ if(0 == [indexPath row]) { return 10; } if(1 == [indexPath row]) { return 30; }}然后:- (CGFloat)tableView:(UITableView *)tableViewheightForRowAtIndexPath:(NSIndexPath *)indexPath{ ... 阅读全文
posted @ 2013-05-28 18:12 酱酱爱 阅读(1022) 评论(0) 推荐(0)
摘要:componentsSeparatedByString:NSMutableArray *components = [messageStr componentsSeparatedByString:@"*"] ;反过来为NSStrig *str = [components componentsJoinedByString:@"*"]; 阅读全文
posted @ 2013-05-24 13:19 酱酱爱 阅读(499) 评论(0) 推荐(0)
摘要:-(id)dequeueReusableCellWithIdentifier:(NSString*)identifier;-(id)dequeueReusableCellWithIdentifier:(NSString*)identifierforIndexPath:(NSIndexPath*)indexPathNS_AVAILABLE_IOS(6_0);//newer第一个:-(id)dequeueReusableCellWithIdentifier:(NSString*)identifier;在初始化时候用:staticNSString*CellIdentifier=@"Cell 阅读全文
posted @ 2013-05-24 13:14 酱酱爱 阅读(412) 评论(0) 推荐(0)
摘要:UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0,0,0,0)]; //设置自动行数与字符换行,为0标示无限制 [label setNumberOfLines:0]; label.lineBreakMode = NSLineBreakByWordWrapping;//换行方式 NSString *strTest = @"用中问和英文 混合测试! just test, good luck!! 看看行不行"; UIFont *font = [UIFont fontWithName:@"Ari... 阅读全文
posted @ 2013-05-23 14:21 酱酱爱 阅读(6958) 评论(0) 推荐(0)
摘要:http://www.sourcegear.com/diffmerge/index.html听说是免费的,没用过 阅读全文
posted @ 2013-05-23 11:38 酱酱爱 阅读(287) 评论(0) 推荐(0)
摘要:把工程build setting 中的Treat Warnings as Errors设置为YES。这是个十分好的设置,所以,以后的项目中都应该用这个设置项 阅读全文
posted @ 2013-05-22 11:26 酱酱爱 阅读(1431) 评论(0) 推荐(0)
摘要:在关闭ARC情况下对NSMutableArray存储内存分析。一:测试环境构建1:创建一个简单视窗工程 在AppDelegate.m- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; // Override point for cus... 阅读全文
posted @ 2013-05-21 17:25 酱酱爱 阅读(4498) 评论(0) 推荐(0)
摘要:窗口大小获取: CGRect screenBounds = [ [UIScreenmainScreen]bounds];//返回的是带有状态栏的RectCGRect rect = [ [UIScreenmainScreen]applicationFrame];//不包含状态栏的RectUIImageView:一 :圆角以及自适应图片大小 UIImage* image = [UIImage imageNamed:@"image.png"]; UIImageView* imageView = [[[UIImageView alloc] initWithImage:image] 阅读全文
posted @ 2013-05-20 10:42 酱酱爱 阅读(41490) 评论(0) 推荐(0)
摘要:NSString *homePath = NSHomeDirectory();NSString *filePath = [homePath stringByAppendingPathComponent:@"array.archiver"];NSMutableData *mutableData = [NSMutableData data];NSKeyedArchiver *archive = [[NSKeyedArchiver alloc] initForWritingWithMutableData:mutableData];[archive encodeObject:@&q 阅读全文
posted @ 2013-05-17 16:32 酱酱爱 阅读(267) 评论(0) 推荐(0)
摘要:UIDatePicker 时间选择器NSDate *currentTime = [NSDate date]; datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 100, 320, 216)]; // [datePicker setTimeZone:[NSTimeZone defaultTimeZone]]; // [datePicker setTimeZone:[NSTimeZone timeZoneWithName:@"GMT+8"]]; // 设置当前显示 [datePi... 阅读全文
posted @ 2013-05-17 13:18 酱酱爱 阅读(880) 评论(0) 推荐(0)