随笔分类 - cocoa
Mac 下cocoa编程记录
摘要: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...
阅读全文
摘要: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...
阅读全文
摘要: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
阅读全文
摘要:先看段代码 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..
阅读全文
摘要:如果想在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
阅读全文
摘要: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
阅读全文
摘要:项目中如果想把异常捕获再写入文件,有个十分容易使用的库DDLog.首先导入库,在git上下载。一:在项目初始化指定全局LogLeve ,一般在xxxapp.m中staticconstint ddLogLevel = LOG_LEVEL_VERBOSE;二: - (void)applicationDidFinishLaunching:(NSNotification *)aNotification{ NSExceptionHandler *exceptionHandler = [NSExceptionHandler defaultExceptionHandler] ; exceptio...
阅读全文
摘要:http://esoftmobile.com/2013/08/17/effective-objective-c-2/Chapter 6: Blocks and Grand Central DispatchItem 37: Understand Blocks《Ry’s Objective-C Tutorial》# BlocksItem 38: Create typedefs for Common Block Types当我们程序中要使用一些具有共性的Block时(返回值类型、参数个数和类型相同),我们可以给这种Block定义一个类型:typedef NSComparisonResult (^NS
阅读全文
摘要:网上看到的 http://esoftmobile.com/2013/08/10/effective-objective-c/本文是针对《Effective Objective-C》一书的代码解读,笔者并没有看过原书,只是通过阅读该书的代码,并结合相应的主题,来臆测作者可能要表达的内容并用自己的语言来描述出来。Chapter 1: Accustoming Yourself to Objective-CItem 1: Familiarize Yourself with Objective-C's RootsItem 2: Minimize Importing Headers in Head
阅读全文
摘要:摘录自:http://zhuyanfeng.com/archives/3066Main Dispatch Queue是在主线程中执行任务的Dispatch Queue。因为主线程只有1个,所以Main Dispatch Queue是Serial Dispatch Queue。追加到Main Dispatch Queue中的任务将在主线程的RunLoop中执行。因为是在主线程中执行,所以应该只将用户界面更新等一些必须在主线程中执行的任务追加到Main Dispatch Queue中。dispatch_queue_t dispatch_main_queue = dispatch_get_main_
阅读全文
摘要:摘录于: http://zhuyanfeng.com/archives/3042dispatch_queue_create 用于创建用户线程队列。可以创建Serial/Concurrent Dispatch Queue 两种队列,即串行与并行队列。1. 创建Serial Dispatch Queue。dispatch_queue_t serialQueue = dispatch_queue_create(“com.SerialQueue”, NULL);可以创建多个串行队列,串行队列也可以并行执行。决不能随意的大量生产Serial Dispatch Queue。2. 创建Concurrent.
阅读全文
摘要:文章摘抄至:http://zhuyanfeng.com/archives/3015 并有一些改动GCD(Grand Central Dispatch)是从OS X Snow Leopard和iOS 4开始引入的新一代的多线程编程技术。开发者只需定义想执行的任务并追加到适当的Dispatch Queue中,GCD就能生成必要的线程并有计划的执行任务。并且由于线程管理是作为系统的一部分来实现的,因此系统可以统一管理,它会决定什么时候创建新线程,创建哪些新线程,多个任务是顺序执行还是并发执行。这样就比以前的线程编程更有效率。dispatch_async(queue, ^{ // dispatch_.
阅读全文
摘要:调试运行时候,提示找不到xib(或者其他)资源文件,在工程中确实看的到该资源文件,到具体运行的资源目录([[NSBundlemainBundle] resourcePath]),没有看到该文件,而其他的资源文件,比如图片,xib文件也有,发现是因为在加入外部资源时候,用拖拽的方式,勾选了copy复选框。但还是没将资源文件拷贝过去,换种方式,在工程目录下右键 用add file to xxx 加入,同时选择copy复选框,ok。资源文件在运行时候拷贝过去了,这是Xcode的bug吗?应该是吧,Apple坑他的爹啊!!
阅读全文
摘要:A:给控件添加方法或变量。1。窗口上拖个控件 NSButton2.。点右上那张狗脸(Editor)对上的。3。右键控件。拖到头文件中。4 。选择加响应方法或变量。
阅读全文
摘要:-(void)addButton{ NSButton* pushButton = [[NSButton alloc] initWithFrame: NSMakeRect(100, 100, 100, 100)]; pushButton.bezelStyle = NSRoundedBezelStyle; [pushButton setTarget:self]; [pushButton setAction:@selector(buttonClick:)]; [self.window.contentView addSubview:pushBut...
阅读全文
摘要:DBSCustomView *view = [[DBSCustomView alloc] initWithFrame:NSMakeRect(100, 100, 100, 100)]; [self.window.contentView addSubview:view];//特别地,这里设置坐标是用NSMakeRect,如果用成了CGRectMacke(0,0,10,10);编译不会出错,但运行是错误的,什么都看不到.NSWindow,NSView都是继承自。NSResponder。应该说他们只是兄弟关系,NSWindow里有个contentView另外,对NSView修改背景颜色,必须覆盖NS.
阅读全文
浙公网安备 33010602011771号