不得不说UIWebView这个控件可定制、可获取的东西真的太少了。
找了半天,没找到相关的参数可以获取title的,只能是使用JavaScript了。代码如下:
- (void)webViewDidStartLoad:(UIWebView *)webView
{
NSString *theTitle=[webView stringByEvaluatingJavaScriptFromString:@"document.title"];
}不得不说UIWebView这个控件可定制、可获取的东西真的太少了。
找了半天,没找到相关的参数可以获取title的,只能是使用JavaScript了。代码如下:
- (void)webViewDidStartLoad:(UIWebView *)webView
{
NSString *theTitle=[webView stringByEvaluatingJavaScriptFromString:@"document.title"];
}SDWebImage是一个可以自动管理图片加载的类库。
因为大家都知道,图片加载非常耗流量,所以在移动平台上对于图片的处理就要异常小心了。因此就必须用到本地缓存了。
而我之前写的一个小型App,因为每张图片的名字都是GUID生成的,不会被修改了。所以会每次都检查一下本地是否有这个文件名的文件存在了。这样最大限度的减小了网络流量,不需要每次都加载一次。
不过呢,SDWebImage的功能不仅仅仅限于此,功能更为强大。最基本的有一个UIImageView的category,用法很简单
[imageView setImageWithURL:[NSURL URLWithString:@"http://www.ioslib.com/ioslib.png"]];另外呢,还有一个SDWebImageManager,使用它可以进行一些异步加载的工作,关于这部分内容 ,可以参见官方的文档:
https://github.com/rs/SDWebImage#readme
SDWebImage是托管在Github上的:http://github.com/rs/SDWebImage
在cocoachina上意外发现了有非常详细的教程了,看来我没必要写下去了,呵呵
直接Copy吧 http://www.cocoachina.com/bbs/read.php?tid-51242.html
ASIHTTPRequest 是一款极其强劲的 HTTP 访问开源项目。让简单的 API 完成复杂的功能,如:异步请求,队列请求,GZIP 压缩,缓存,断点续传,进度跟踪,上传文件,HTTP 认证。在新的版本中,还加入了 Objective-C 闭包 Block 的支持,让我们的代码加轻简灵活。
下面就举例说明它的 API 用法。
XXXXX nsthread autoreleased with no pool in place - just leaking
这是一个会经常发生的警告提示。
当调用
[NSThread detachNewThreadSelector:@selector(XXX) toTarget:self withObject:nil];
发起一个多线程的时候会发生这种警告,那么,加上NSAutoreleasePool就可以了,NSAutoreleasePool我的理解是一个自动的进程管理池,当然并不代表着有Java或者AS3的强大GC机制。
[NSThread detachNewThreadSelector:@selector(ooxx) toTarget:self withObject:nil];
- (void)ooxx
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
//OOXX,if you like:)
[pool release];
}
关于NSAutoreleasePool可以查看Apple 的官方文档:NSAutoreleasePool Class Reference
另外,需要注意的是,在多进程中要操作主进程的UI是不可以直接操作的,一定要使用:performSelectorOnMainThread
刚刚的确郁闷到了,UIViewController 的 presentModalViewController 愣是无效。
找了一圈,找到了一个类似的 ModalViewController not showing on simulator
原来出现这个问题的原因是我在viewDidLoad方法中执行了presentModalViewController.
如果由按钮触发就不会出现这个问题了。
那么,很简单了,使用
[self performSelector:@selector(modalForToken) withObject:nil afterDelay:0.1];
就可以了。
至于为什么会出现这个问题,不是很清楚=.=
前几天介绍了一下ASIHttpRequest 是神马东东。
今天再来说说,这玩意儿要怎么在项目中使用。
一、从Github(http://github.com/pokeb/asi-http-request/tree)下,把压缩包下过来。然后解压。
二、把Classes里的文件,拖到XCode中,还有把External/Reachbility也拖进去,这是Apple 官方用来检查网络链接是否正常的类库
三、再导入几个框架包。分别是SystemConfiguration.framework, MobileCoreServices.framework, CoreGraphics.framework,CFNetwork.framework和 libz.1.2.3.dylib
四、另外,还要把在头文件搜索路径中加入 libxml2的路径
至此,已经可以再项目中使用 ASIHttpRequest了。
ASIHttpRequest 真的是个objective-c上一个非常不错的网络连接(CFNetwork API)封装库。在几个小型的练手App上用下来,很爽!
ASIHttpRequest 封装了很多的复杂逻辑,让开发者不必纠结于某些具体细节,而注重于业务逻辑处理上。ASIHttpRequest可以被用于Mac OS X 和iOS程序项目中。
ASIHttpRequest 的官网是:http://allseeing-i.com/ASIHTTPRequest/
项目托管在Github 上:http://github.com/pokeb/asi-http-request/tree
基于BSD 开源协议。
iOS开发神马的还是挺有意思的,虽然奇奇怪怪的问题也不少。
好吧,今天做个弱智的记录吧。
如果获取一个对象的类名。
[NSString stringWithUTF8String:object_getClassName(obj)];
为了与线上的Ubuntu Server环境同步(主要是不想写两套配置文件,特别是URLRewrite规则= =‘)
准备在mac下安装个nginx + php
不是啥高深技术,纯属记录而已。
安装macports不多赘言。。。
首先安装nginx+php+cgi+spawn-fcgi
sudo port install nginx fcgi spawn-fcgi
sudo port install php5 +fastcgi
然后运行
sudo nginx
sudo spawn-fcgi -a 127.0.0.1 -p 9000 -u nobody -f /opt/local/bin/php-cgi
哈哈,很简单吧。要安装 其他扩展,比如imagick神马的自行安装吧