摘要: 第一步:开启子线程 //开启子线程到网络上获取数据 myFirstThread = [[NSThread alloc]initWithTarget:self selector:@selector(thread1GetData) object:nil]; [myFirstThread setName:@"第一个子线程,用于获取网络数据"]; [myFirstThread start]; 第二步:子线程的方法//获取数据-(void)thread1GetData{ while (!myFirstThread.isCancelled) { // 关键 ... 阅读全文
posted @ 2013-06-23 22:46 ygm900 阅读(8018) 评论(0) 推荐(0) 编辑
摘要: 一个典型的结束子线程的方法: 用isFinished 检测子线程是否被完全kill掉-(IBAction)btnBack:(id)sender{ //释放内存 仅仅remove 并不会触发内存的释放 if (!(mySecondThread==nil) && !myFirstThread.isCancelled) { [myFirstThread cancel]; //等子线程结束再跳出循环 int i=0; while (!myFirstThread.isFinished){ ... 阅读全文
posted @ 2013-06-23 22:07 ygm900 阅读(3155) 评论(0) 推荐(0) 编辑
摘要: ios的一些知识点一 非ARC的内存管理情况1-autorelease,当用户的代码在持续运行时,自动释放池是不会被销毁的,这段时间内用户可以安全地使用自动释放的对象。当用户的代码运行告一段落,开始等待用户的操作,自动释放池就会被释放掉(调用dealloc),池中的对象都会收到一个release,有可能会因此被销毁。2-成员属性:readonly:不指定readonly,默认合成getter和setter方法。外界毫不关心的成员,则不要设置任何属性,这样封装能增加代码的独立性和安全性。相当于私有成员?assign:表示只进行简单的赋值,不会发送retain消息。retain:会向旧值发送rel 阅读全文
posted @ 2013-06-23 22:00 ygm900 阅读(451) 评论(0) 推荐(0) 编辑
摘要: ios中全局变量默认是灰绿色的,只有少些全局变量,才能提高代码的聚合程度。才能更容易管理代码。 阅读全文
posted @ 2013-06-23 19:39 ygm900 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 例如,本页数据没有加载完成,而客户就按下了另外一个按钮,那么本页的数据需要继续加载,但是,加载完成后又不能放到view的最前段。所以,就有了下面的代码: if (self.zhiNengGuiHuaViewController != nil) { // 这个判断获取可以不用,而直接写下面的代码 [self.view addSubview:commonTableView]; [self.view sendSubviewToBack:commonTableView]; //让一个子画面刷新后,放到另一个子画面的后面,而不是前面 }else { [self.vie... 阅读全文
posted @ 2013-06-23 19:33 ygm900 阅读(398) 评论(0) 推荐(0) 编辑
摘要: [selfremoveAllSubviews]; //删除所有子视图(包括 selfl.view) 所以,要慎用 阅读全文
posted @ 2013-06-23 19:08 ygm900 阅读(515) 评论(0) 推荐(0) 编辑
摘要: 转:http://www.cocoachina.com/bbs/read.php?tid=87592多线程编程指南原文:Threading Programming Guide链接:http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Multithreading/Introduction/Introduction.html#//apple_ref/doc/uid/10000057i-CH1-SW1PDF文档下载:多线程编程指南.pdf(1427 K) 下载次数:10893PS:【翻译缘由---翻译本身也是强 阅读全文
posted @ 2013-06-23 16:23 ygm900 阅读(626) 评论(0) 推荐(0) 编辑
摘要: 在上一文中,我们已经讨论过用Objective-C锁几种实现(跳转地址),也用代码实际的演示了如何通过构建一个互斥锁来实现多线程的资源共享及线程安全,今天我们继续讨论锁的一些高级用法。1.NSRecursiveLock递归锁平时我们在代码中使用锁的时候,最容易犯的一个错误就是造成死锁,而容易造成死锁的一种情形就是在递归或循环中,如下代码://主线程中NSLock *theLock = [[NSLock alloc] init];TestObj *obj = [[TestObj alloc] init]; //线程1dispatch_async(dispatch_get_global_queue 阅读全文
posted @ 2013-06-23 16:04 ygm900 阅读(341) 评论(0) 推荐(0) 编辑
摘要: 为什么需要使用锁,当然熟悉多线程的你,自然不会对它觉得陌生。那你在代码中是否很好的使用了锁的机制呢?你又知道几种实现锁的方法呢?今天一起来探讨一下Objective-C中几种不同方式实现的锁,在这之前我们先构建一个测试用的类,假想它是我们的一个共享资源,method1与method2是互斥的,代码如下:@implementation TestObj - (void)method1{ NSLog(@"%@",NSStringFromSelector(_cmd));} - (void)method2{ NSLog(@"%@",NSStringFromSele 阅读全文
posted @ 2013-06-23 16:02 ygm900 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 童鞋们都知道Xcode会根据当前SDK在Run按钮旁边的选项栏中显示适合的Simulator供开发者选择,如下图:但是有时候则错误显示“My mac 64-bit” ,这个明显不是我们想要的,如下图:上面这种情况主要出现原因在于你打开了另外一个mac电脑copy过来的项目时或者其他原因造成出现,那么解决的方法这里Himi给出来:解决步骤:首先关闭你的Xcode,找到你出现解决此问题的项目目录下,然后此项目的***.xcodeproj 文件,然后右键选择“显示包内容”,如下图:一般情况下,包中有如下3个文件:1.project.pbxproj 2.project.xcworkspace 3.xc 阅读全文
posted @ 2013-06-23 15:46 ygm900 阅读(489) 评论(0) 推荐(0) 编辑