Fork me on GitHub

2012年2月16日

摘要: 程序中一个界面用到了好多张大图,内存报警告了,所以做了一下图片缩放,在网上找了别人写的代码//把图片做等比缩放,生成一个新图片 1 - (UIImage *) imageByScalingProportionallyToSize:(CGSize)targetSize sourceImage:(UIImage *)sourceImage { 2 3 UIGraphicsBeginImageContext(targetSize); 4 [sourceImage drawInRect:CGRectMake(0, 0, targetSize.width, targetSize... 阅读全文
posted @ 2012-02-16 22:38 pengyingh 阅读(2848) 评论(0) 推荐(0)
摘要: 如题,是不是大家为了方便都这样加载图片啊myImage = [UIImage imageNamed:@"icon.png"];那么小心了这种方法在一些图片很少,或者图片很小的程序里是ok的。但是,在大量加载图片的程序里,请千万不要这样做。为什么呢 ???????这种方法在application bundle的顶层文件夹寻找由供应的名字的图象 。 如果找到图片,装载到iPhone系统缓存图象。那意味图片是(理论上)放在内存里作为cache的。试想你图片多了,是什么后果``````图片cache极有可能不会响应 memory warnings and release its o 阅读全文
posted @ 2012-02-16 22:26 pengyingh 阅读(21249) 评论(3) 推荐(1)
摘要: http://www.iloss.me/?p=878UIRequiresPersistentWiFi 在程序中弹出wifi选择的key(系统设置中需要将wifi提示打开)UIAppFonts 内嵌字体UIApplicationExitsOnSuspend 程序是否在后台运行,自己在进入后台的时候exit(0)是很傻的办法UIBackgroundModes 后台运行时的服务,具体看iOS4的后台介绍UIDeviceFamily array类型(1为iPhone和iPod touch设备,2为iPad)UIFileSharingEnabled 开启itunes共享document文件夹UILaun 阅读全文
posted @ 2012-02-16 22:18 pengyingh 阅读(379) 评论(0) 推荐(0)
摘要: UIViewController* transparentView = [[UIViewController alloc] init];UIViewController* controller = self.view.window.rootViewController;transparentView.view.backgroundColor = [UIColor blackColor];transparentView.view.alpha = 0.5f;controller.modalPresentationStyle = UIModalPresentationCurrentContext;[ 阅读全文
posted @ 2012-02-16 22:15 pengyingh 阅读(1165) 评论(0) 推荐(0)
摘要: 有时候我们看到一个App,想看看他的一些界面是如何实现的,这个时候需要查看一下它的图片资源,不过iOS的png图片编译后一般的图片阅读器都是没法查看的,本文将告诉的原因和转换出原图的方法(得安装XCode)。ipa 解压,将png相关文件夹拷贝出来,在命令行下使用/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/pngcrush -revert-iphone-optimizations xxx.png yyy.png我们都知道一个编译好的iPhone app 其中的png图片一般普通的图片阅读器是无法直接读取的,这是因为XCode 阅读全文
posted @ 2012-02-16 22:02 pengyingh 阅读(4470) 评论(0) 推荐(0)
摘要: 之前说过GCD中的serial queue是FIFO的执行次序,也就是说你依次添加进queue的任务会按照先后顺序执行完毕.最近在做一个关于iCloud的项目,在更新文件夹内容变化的时候用到了serial queue,处理逻辑如下:- (void)presentedSubitemDidChangeAtURL:(NSURL *)url{ NSDate *currentDate = [NSDate date]; myQueue = NULL; if (myQueue == NULL) { myQueue = dispatch_queue_create([[c... 阅读全文
posted @ 2012-02-16 21:58 pengyingh 阅读(258) 评论(0) 推荐(0)
摘要: rowid和 Integer主键及自增属性大多数情况下,sqlite3的表都有一个rowid(也叫oid,_rowid_),这是一个64位的整数,并作为sqlite存储结构B树的主键.因此使用rowid查询会比以其他设定的主键查询,速度会非常快.在做插入操作的时候,对于rowid的值通常情况下不要去指定,让系统自己去决定该去何值。因为sqlite会通过SQLITE_SEQUENCE来追踪表的rowid取值情况.而且sqlite定义了rowid的取值算法:在未超出rowid的范围内,待插入记录的rowid总是表中存在过的的rowid最大值+1。比如依次插入5条记录,此时最后一条记录的rowid是 阅读全文
posted @ 2012-02-16 21:54 pengyingh 阅读(2224) 评论(0) 推荐(0)
摘要: UITextField是我们经常用的之一但是常用的属性都很熟悉,有些不常用的我也总结下,例如下面的:UIImageView * myView = [[ UIImageView alloc]initWithImage:[UIImage imageNamed:@"face.png"]];UIImageView * myView2 = [[ UIImageView alloc]initWithImage:[UIImage imageNamed:@"face.png"]];UITextField *myTextField=[[UITextField alloc] 阅读全文
posted @ 2012-02-16 21:39 pengyingh 阅读(515) 评论(0) 推荐(0)
摘要: 与CFLocale自由转换.可以通过注册NSCurrentLocaleDidChangeNotification通知来获得区域位置改变消息生成–initWithLocaleIdentifier:+systemLocale//操作系统的,最初始的区域?+currentLocale//当前用户设定区域,肯能是缓存的+autoupdatingCurrentLocale//当前用户的系统区域设置,实时更新的信息–displayNameForKey:value: /* 某种locale中对指定区域中指定属性的显示值。并不是所有的属性都有显示值。 举例:NSLocale *frLocale = [[... 阅读全文
posted @ 2012-02-16 21:27 pengyingh 阅读(4137) 评论(0) 推荐(1)
摘要: Ios4已经直接支持blocks,很有必要学习一下。在ios,blocks是对象,它封装了一段代码,这段代码可以在任何时候执行。Blocks可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值。它和传统的函数指针很类似,但是有区别:blocks是inline的,并且它对局部变量是只读的。Blocks的定义:int(^Multiply)(int,int) = ^(intnum1,intnum2) {returnnum1 * num2;};定义了一个Multiply的blocks对象,它带有两个int参数,返回int。等式右边就是blocks的具体实现,注意{}blocks体里的;。 阅读全文
posted @ 2012-02-16 19:38 pengyingh 阅读(196) 评论(0) 推荐(0)
摘要: http://www.cnblogs.com/scorpiozj/archive/2011/06/27/2091259.html做iphone的,UINavigationController+UItableViewController组合的应用是必须会的,那么我们必须学习下如何使用320来实现此类应用。考虑这样的需求:点击tableview上的feed行就从apple store上获取排名前10的专辑信息,链接:http://itunes.apple.com/us/rss/topalbums/limit=10/explicit=true/xml. 具体流程:程序启动后是一tableview(图 阅读全文
posted @ 2012-02-16 19:34 pengyingh 阅读(400) 评论(0) 推荐(0)
摘要: http://www.cnblogs.com/scorpiozj/archive/2011/06/26/2090889.html学习并使用KVO有段时间了,在之前也简单的介绍了KVO机制,这种机制提供了监听某些类属性变化的机制.在MVC中,简单的说,通过监听M的变化,可以及时更新V.因为监听属性明确,当有变化时就直接传递到观察者.考虑这样一种情况:请求某网站的rss,并将内容解析出来在tableview中显示出来.因为网络请求以及数据解析需要时间,如果我们把获得的全部数据解析后再显示出来,在用户体验上就会非常不好:用户启动程序后,风火轮可能需要转很久,然后突然就冒出来一大堆的数据.改进的方法之 阅读全文
posted @ 2012-02-16 19:26 pengyingh 阅读(2907) 评论(0) 推荐(0)
摘要: 虽然很早就知道Three20这个强大的库,可是一直没有学习怎么用。个人觉得学习最好的方式之一就是记笔记,一来方便以后的温故,二来也可以让人“挑刺”达到交流的目的。最后么,希望通过blog这个平台,可以监督自己的学习进程。20110517学习的时候首先关注了TTCore(看到了core,所以就先从这个下手了)中对cocoa类的category。比如说NSString,就有判断空格换行,解析url请求,生成MD5等等。还有NSDate,有很多格式化时间输出字符串的方法,都很实用。这些category都很容易看懂,使用时从名字能方便的看出效果。在这些方法中,有个函数比较陌生,我把注释一并写在下面。- 阅读全文
posted @ 2012-02-16 19:24 pengyingh 阅读(617) 评论(0) 推荐(0)
摘要: http://www.keakon.net/2011/06/26/开发iOS平台的猜数游戏这些天终于戒掉了星际争霸2,开始学习iOS开发了。虽然还只是一知半解,但学了几天后,觉得单视图的iOS应用开发起来太轻松了,就忍不住想自己动手做点小玩意。我也没有什么好的创意,只是偶然看到猜数的游戏,觉得用选取器这个控件很适合,就决定做了。虽然这个游戏大多数人都玩过,不过我还是介绍下规则吧:裁判从1到100以内随机选择一个整数,然后让玩家猜测选择的是什么数。每次猜测后,如果猜错了,裁判会告诉玩家是猜大了还是猜小了,直到玩家猜出来。当然,用的次数越少就越好。如果用二分法的话,7次以内肯定能猜出来的。而我要做 阅读全文
posted @ 2012-02-16 18:46 pengyingh 阅读(579) 评论(0) 推荐(0)
摘要: 最近在做一个UITableView的例子,发现滚动时的性能还不错。但来回滚动时,第一次显示的图像不如再次显示的图像流畅,出现前会有稍许的停顿感。于是我猜想显示过的图像肯定是被缓存起来了,查了下文档后发现果然如此。后来在《Improving Image Drawing Performance on iOS》一文中找到了一些提示:原来在显示图像时,解压和重采样会消耗很多CPU时间;而如果预先在一个bitmap context里画出图像,再缓存这个图像,就能省去这些繁重的工作了。接着我就写了个例子程序来验证:// ImageView.h#import <UIKit/UIKit.h>@in 阅读全文
posted @ 2012-02-16 18:32 pengyingh 阅读(1989) 评论(0) 推荐(1)
摘要: 在iOS应用中,UITableView应该是使用率最高的视图之一了。iPod、时钟、日历、备忘录、Mail、天气、照片、电话、短信、Safari、App Store、iTunes、Game Center⋯几乎所有自带的应用中都能看到它的身影,可见它的重要性。然而在使用第三方应用时,却经常遇到性能上的问题,普遍表现在滚动时比较卡,特别是table cell中包含图片的情况时。实际上只要针对性地优化一下,这种问题就不会有了。有兴趣的可以看看LazyTableImages这个官方的例子程序,虽然也要从网上下载图片并显示,但滚动时丝毫不卡。下面就说说我对UITableView的了解。不过由于我也是初学 阅读全文
posted @ 2012-02-16 18:22 pengyingh 阅读(9730) 评论(1) 推荐(0)
摘要: 各种语言都有些传递函数的方法:C语言中可以使用函数指针,C++中有函数引用、仿函数和lambda,Objective-C里也有选择器(selector)和block。不过由于iOS SDK中的大部分API都是selector的方式,所以本文就重点讲述selector了。Objective-C和我接触过的其他面向对象的语言不同,它强调消息传递,而非方法调用。因此你可以对一个对象传递任何消息,而不需要在编译期声名这些消息的处理方法。很显然,既然编译期并不能确定方法的地址,那么运行期就需要自行定位了。而Objective-C runtime就是通过“id objc_msgSend(id theRec 阅读全文
posted @ 2012-02-16 18:19 pengyingh 阅读(4137) 评论(0) 推荐(1)
摘要: http://www.keakon.net/2011/08/05/让ASIHTTPRequest不占用主线程ASIHTTPRequest是个很易用的iOS / Mac OS X平台的HTTP库,比NSURLRequest好用多了,所以我一直在用它。不过使用中我发现,当下载线程数超过2时,就会影响到主线程响应用户请求的速度了。好奇之余我测试了一下completionBlock,发现它总是在主线程调用,而NSOperation的文档中却说一般会在子线程中执行。于是看了下ASIHTTPRequest.m,终于发现问题所在了:// Subclasses might override this meth 阅读全文
posted @ 2012-02-16 18:13 pengyingh 阅读(197) 评论(0) 推荐(0)
摘要: http://www.keakon.net/2011/08/13/用CommonCrypto计算MD5和SHA编程时经常需要和MD5、SHA等hash算法打交道,搜了一下后我发现iOS SDK中自带了CommonCrypto,于是就无需自己实现或用第三方库了。首先来看MD5,它的输出结果是128位的,因此需要16个8位的char来存储。而输入参数我就直接用const char *了,反正NSString和NSData都能与它相互转换:#include <CommonCrypto/CommonDigest.h>static inline char hexChar(unsigned c 阅读全文
posted @ 2012-02-16 18:08 pengyingh 阅读(299) 评论(0) 推荐(0)
摘要: 【IT168技术】在前文《深入浅出Cocoa之类与对象》一文中,我已经详细介绍了ObjC中的 Class 与 Object 的概念,今天我们来如何在运行时动态创建类。下面这个函数就是应用前面讲到的Class,MetaClass的概念,在运行时动态创建一个类。这个函数来自《Inside Mac OS X-The Objective-C Programming Language》。#import<objc/objc.h>#import<objc/runtime.h>BOOL CreateClassDefinition(constchar*name,constchar*sup 阅读全文
posted @ 2012-02-16 15:54 pengyingh 阅读(2058) 评论(0) 推荐(0)

导航