摘要: 多线程编程中普遍遵循一个原则,就是一切与UI相关的操作都有主线程做,子线程只负责事务,数据方面的处理。所以不能直接在子线程中调用主线程的类的更新UI的方法,这样看不到任何结果。而是需要有个缓冲,切换到主线程执行,方法如下:performSelectorOnMainThread在需要更新UI的地方,[self performSelectorOnMainThread:@selector(updateUI)withObject:updateData waitUntilDone:YES];调用之前定义好的-(void)updateUI{},就可以看到效果 阅读全文
posted @ 2013-12-11 14:52 xcy617 阅读(149) 评论(0) 推荐(0)
摘要: 某些情况下,服务器返回的字段中含有空格,这空格是服务器开发人员不小心往数据中多敲了,但客户端需要保护,所以在客户端需要把字符串中的空格过滤掉。1、使用NSString中的stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]方法只是去掉左右两边的空格;2、使用NSString *strUrl = [urlString stringByReplacingOccurrencesOfString:@" " withString:@""];可以去掉空格,注意此时生成的str 阅读全文
posted @ 2013-05-16 16:54 xcy617 阅读(142) 评论(0) 推荐(0)
摘要: - (BOOL)CheckInput:(NSString *)string { NSScanner* scan = [NSScanner scannerWithString:string]; int val; return [scan scanInt:&val] && [scan isAtEnd]; } 阅读全文
posted @ 2013-03-07 18:31 xcy617 阅读(560) 评论(0) 推荐(0)
摘要: 由iphone 4到iphone 5屏幕增大,会导致之前的应用出现两条黑边。我的应用是给黑边加两张图片进行遮盖。操作方法:1.在appdelegate中判断是否是iphone5 设备。如果是,加两个window,用以存放图片。if(iphone 5){nsstring *path = [[nsbundle mainbundle]pathforresource:@"zuobian" oftype:@"png"];uiiamge *image = [uiimage imagewithcontentsoffile:path];//获取图片uiimageview 阅读全文
posted @ 2013-01-24 15:26 xcy617 阅读(224) 评论(0) 推荐(0)
摘要: 保证代码线程安全和属性的使用也相关。atomic属性标志指定无论多少个线程访问给定属性,其值的设置或者获取都会得到一个“完整”的值,而不是部分值。本质上,它确保@synchronized指令为你的属性所创建的存取器函数在赋值或者取值之前,会在生成的存取器函数中利用一个@synchronized(self)代码块。当你指定nonatomic时,就不会调用@synchronized(个人理解就是不加锁).默认的是atomic(个人理解加锁),表明如果两个线程同时通过属性存取器函数访问某个特定的成员变量,那么该操作是线程安全的。但这并不能保证整个对象或者对这个对象的多个不同的存取器函数的不同调用时线 阅读全文
posted @ 2013-01-23 15:55 xcy617 阅读(604) 评论(0) 推荐(0)
摘要: 每个程序都至少有个一主线程,在没有显示的创建另一个线程的情况下,主线程从主函数开始执行然后负责执行剩下的应用代码。你可以把线程想成指令按顺序执行的应用的一行代码的执行。创建另外一个线程时,实际上在应用中就会有两个并发运行的独立线程。在单核的极其上运行,线程看起来是并发运行,但实际上它们会得到CPU分配的不同时间片段。在多核机器上就有可能是同时执行的。 当两个线程并行执行时,有可能两个线程在同一时间访问试图访问相同的内存块,若这样便会导致程序出现错误,称作不安全的线程状态。所以必须防止一个线程在同一时间访问另一个线程正在访问的内存块,常用的方法是互斥锁(lock)和使用@synchronize. 阅读全文
posted @ 2013-01-23 15:37 xcy617 阅读(269) 评论(0) 推荐(0)
摘要: 为了将应用数据存储到硬盘中,IOS提供了:plist(属性列表),数据库存储(SQLite),对象归档(NSCoding),Core Data,NSUserDefaults;1.plist属性列表操作用来存储一些固定的数据类型:nsarray nsstring nsdata nsnumber nsdictionary nsdata等简单对象,适合小数据的操作,速率很高。2.数据库(SQLite) 不解释3.对象归档:(nscoding)plist可以对固定类型的数据进行存储操作,但当面对复杂的数据或者自定义的数据类型时,plist不再适用,这时就可以适用对象归档(也称固化)。但其缺点是数据必须 阅读全文
posted @ 2013-01-22 16:35 xcy617 阅读(592) 评论(0) 推荐(0)
摘要: 断点续传:一次没有下载完成,下一次可以接着下载。(需服务器的支持)向一个HTTP服务器发送GET请求时,可以说明本次请求文件的字节范围。同理,向一个FTP服务器发送请求时,也可以在REST请求中指定你请求文件的字节范围,只要服务器支持你请某一字节范围的文件,那就可以断点续传。普通的文件传送从开始传送,中途中断则需要重新下载。断点续传是在客户端每次停止下载时记录本次下载已经下载的范围,下一次由当前记录的位置继续下载。 在客户端实现断点续传不仅要从服务器端合适的位置开始请求下载,而且还要在客户端已有的文件合适位置继续写入下载的数据。 阅读全文
posted @ 2013-01-18 00:04 xcy617 阅读(200) 评论(0) 推荐(0)
摘要: get主要负责查询,安全性低,操作方便; post安全性高,操作如下:NSMutableURLRequest*request=[[[NSMutableURLRequestalloc]init]autorelease];//设置提交目的url[requestsetURL:[NSURLURLWithString:kUserLoginCheckUrl]];//设置提交方式为POST[requestsetHTTPMethod:@"POST"];//设置http-header:Content-Type//这里设置为application/x-www-form-urlencoded,如 阅读全文
posted @ 2013-01-16 14:26 xcy617 阅读(484) 评论(0) 推荐(0)
摘要: (weak和strong)不同的是 当一个对象不再有strong类型的指针指向它的时候 它会被释放 ,即使还有weak型指针指向它。一旦最后一个strong型指针离去 ,这个对象将被释放,所有剩余的weak型指针都将被清除。可能有个例子形容是妥当的。想象我们的对象是一条狗,狗想要跑掉(被释放)。strong型指针就像是栓住的狗。只要你用牵绳挂住狗,狗就不会跑掉。如果有5个人牵着一条狗(5个strong型指针指向1个对象),除非5个牵绳都脱落 ,否着狗是不会跑掉的。weak型指针就像是一个小孩指着狗喊到:“看!一只狗在那” 只要狗一直被栓着,小孩就能看到狗,(weak指针)会一直指向它。只要狗的 阅读全文
posted @ 2013-01-03 22:15 xcy617 阅读(586) 评论(0) 推荐(0)