<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_黎波</title><subtitle type="text">移动应用解决方案开发、技术咨询和技术培训</subtitle><id>http://feed.cnblogs.com/blog/u/11675/rss</id><updated>2012-05-14T05:48:00Z</updated><author><name>黎波</name><uri>http://www.cnblogs.com/bobli/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/bobli/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/11675/rss"/><entry><id>http://www.cnblogs.com/bobli/archive/2012/03/26/2418694.html</id><title type="text">[Android]MD5加密字符串</title><summary type="text">将字符串进行MD5加密，返回加密后的字符串（实际上是该字符串的报文摘要）。publicstaticStringmd5(Stringstring){byte[]hash;try{hash=MessageDigest.getInstance("MD5").digest(string.getBytes("UTF-8"));}catch(NoSuchAlgorithmExceptione){thrownewRuntimeException("Huh,MD5shouldbesupported?",e);}catch(UnsupportedEnc</summary><published>2012-03-26T14:24:00Z</published><updated>2012-03-26T14:24:00Z</updated><author><name>黎波</name><uri>http://www.cnblogs.com/bobli/</uri></author><link rel="alternate" href="http://www.cnblogs.com/bobli/archive/2012/03/26/2418694.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/bobli/archive/2012/03/26/2418694.html"/><content type="html">&lt;p&gt;将字符串进行MD5加密，返回加密后的字符串（实际上是该字符串的报文摘要）。&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;String&amp;nbsp;md5(String&amp;nbsp;string)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;byte&lt;/span&gt;[]&amp;nbsp;hash;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;try&lt;/span&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hash&amp;nbsp;=&amp;nbsp;MessageDigest.getInstance("MD5").digest(string.getBytes("UTF-8"));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span style="color: #0000FF;"&gt;catch&lt;/span&gt;&amp;nbsp;(NoSuchAlgorithmException&amp;nbsp;e)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;throw&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&amp;nbsp;RuntimeException("Huh,&amp;nbsp;MD5&amp;nbsp;should&amp;nbsp;be&amp;nbsp;supported?",&amp;nbsp;e);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span style="color: #0000FF;"&gt;catch&lt;/span&gt;&amp;nbsp;(UnsupportedEncodingException&amp;nbsp;e)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;throw&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&amp;nbsp;RuntimeException("Huh,&amp;nbsp;UTF-8&amp;nbsp;should&amp;nbsp;be&amp;nbsp;supported?",&amp;nbsp;e);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;StringBuilder&amp;nbsp;hex&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&amp;nbsp;StringBuilder(hash.length&amp;nbsp;*&amp;nbsp;2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;for&lt;/span&gt;&amp;nbsp;(&lt;span style="color: #0000FF;"&gt;byte&lt;/span&gt;&amp;nbsp;b&amp;nbsp;:&amp;nbsp;hash)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&amp;nbsp;((b&amp;nbsp;&amp;amp;&amp;nbsp;0xFF)&amp;nbsp;&amp;lt;&amp;nbsp;0x10)&amp;nbsp;hex.append("0");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hex.append(Integer.toHexString(b&amp;nbsp;&amp;amp;&amp;nbsp;0xFF));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&amp;nbsp;hex.toString();&lt;br /&gt;}&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;参考：&lt;a target="_blank" href="http://stackoverflow.com/questions/5494447/what-will-be-the-android-java-equivalent-of-md5-function-in-php"&gt;http://stackoverflow.com/questions/5494447/what-will-be-the-android-java-equivalent-of-md5-function-in-php&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;作者：黎波&lt;br /&gt;博客：http://bobli.cnblogs.com/&lt;br /&gt;日期：2012年3月26日&amp;nbsp;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/bobli/aggbug/2418694.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/bobli/archive/2012/03/26/2418694.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/bobli/archive/2012/03/26/2417709.html</id><title type="text">[Android]获取设备IP地址</title><summary type="text">原理是遍历所有网络接口的所有IP地址。如果方法返回null，则设备没有可用的网络连接。方法返回的IP地址是设备正在使用的IP地址。publicStringgetLocalIpAddress(){try{for(Enumeration&lt;NetworkInterface&gt;en=NetworkInterface.getNetworkInterfaces();en.hasMoreElements();){NetworkInterfaceintf=en.nextElement();for(Enumeration&lt;InetAddress&gt;enumIpAddr=intf.getIne</summary><published>2012-03-26T04:30:00Z</published><updated>2012-03-26T04:30:00Z</updated><author><name>黎波</name><uri>http://www.cnblogs.com/bobli/</uri></author><link rel="alternate" href="http://www.cnblogs.com/bobli/archive/2012/03/26/2417709.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/bobli/archive/2012/03/26/2417709.html"/><content type="html">&lt;p&gt;原理是遍历所有网络接口的所有IP地址。如果方法返回null，则设备没有可用的网络连接。方法返回的IP地址是设备正在使用的IP地址。&lt;br /&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;String&amp;nbsp;getLocalIpAddress()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;try&lt;/span&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;for&lt;/span&gt;&amp;nbsp;(Enumeration&amp;lt;NetworkInterface&amp;gt;&amp;nbsp;en&amp;nbsp;=&amp;nbsp;NetworkInterface.getNetworkInterfaces();&amp;nbsp;en.hasMoreElements();)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NetworkInterface&amp;nbsp;intf&amp;nbsp;=&amp;nbsp;en.nextElement();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;for&lt;/span&gt;&amp;nbsp;(Enumeration&amp;lt;InetAddress&amp;gt;&amp;nbsp;enumIpAddr&amp;nbsp;=&amp;nbsp;intf.getInetAddresses();&amp;nbsp;enumIpAddr.hasMoreElements();)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;InetAddress&amp;nbsp;inetAddress&amp;nbsp;=&amp;nbsp;enumIpAddr.nextElement();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&amp;nbsp;(!inetAddress.isLoopbackAddress())&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&amp;nbsp;inetAddress.getHostAddress().toString();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span style="color: #0000FF;"&gt;catch&lt;/span&gt;&amp;nbsp;(SocketException&amp;nbsp;ex)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Log.e(LOG_TAG,&amp;nbsp;ex.toString());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;null&lt;/span&gt;;&lt;br /&gt;}&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;参考：&lt;a target="_blank" href="http://www.droidnova.com/get-the-ip-address-of-your-device,304.html"&gt;http://www.droidnova.com/get-the-ip-address-of-your-device,304.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div&gt;作者：黎波&lt;br /&gt;博客：http://bobli.cnblogs.com/&lt;br /&gt;日期：2012年3月26日&lt;/div&gt;&lt;img src="http://www.cnblogs.com/bobli/aggbug/2417709.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/bobli/archive/2012/03/26/2417709.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/bobli/archive/2012/03/14/2395565.html</id><title type="text">如何检查对象的类型[iOS/Android/Windows Phone]</title><summary type="text">iOS使用 NSObject 基类的 isKindOfClass: 方法。声明：- (BOOL)isKindOfClass:(Class)aClass描述：Returns a Boolean value that indicates whether the receiver is an instance of given class or an instance of any class that inherits from that class. (required)参数：aClass: A class object representing the Objective-C class to</summary><published>2012-03-14T03:01:00Z</published><updated>2012-03-14T03:01:00Z</updated><author><name>黎波</name><uri>http://www.cnblogs.com/bobli/</uri></author><link rel="alternate" href="http://www.cnblogs.com/bobli/archive/2012/03/14/2395565.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/bobli/archive/2012/03/14/2395565.html"/><content type="html">&lt;p&gt;&lt;strong&gt;iOS&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;使用 &lt;strong&gt;NSObject&lt;/strong&gt; 基类的 &lt;strong&gt;isKindOfClass:&lt;/strong&gt; 方法。&lt;/p&gt;&lt;p&gt;声明：&lt;br /&gt;&lt;/p&gt;&lt;p&gt;- (BOOL)isKindOfClass:(Class)aClass&lt;br /&gt;描述：&lt;br /&gt;Returns a Boolean value that indicates whether the receiver is an instance of given class or an instance of any class that inherits from that class. (required)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;参数：&lt;br /&gt;&lt;/p&gt;&lt;p&gt;aClass: A class object representing the Objective-C class to be tested.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;返回值：&lt;/p&gt;&lt;p&gt;YES if the receiver is an instance of aClass or an instance of any class that inherits from aClass, otherwise NO. &lt;/p&gt;&lt;p&gt;示例代码：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;for&lt;/span&gt;&amp;nbsp;(UIView&amp;nbsp;*ctrl&amp;nbsp;&lt;span style="color: #0000FF;"&gt;in&lt;/span&gt;&amp;nbsp;[self&amp;nbsp;childViewControllers])&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&amp;nbsp;([ctrl&amp;nbsp;isKindOfClass:[UITextField&amp;nbsp;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;]])&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[(UITextField*)ctrl&amp;nbsp;setText:&lt;span style="color: #800000;"&gt;@""&lt;/span&gt;];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;else&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&amp;nbsp;([ctrl&amp;nbsp;isKindOfClass:[UISwitch&amp;nbsp;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;]])&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[(UISwitch*)ctrl&amp;nbsp;setOn:NO];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Android&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;The &lt;strong&gt;instanceof&lt;/strong&gt; operator compares an object to a specified type. You can use it to test if an object is an instance of a class, an instance of a subclass, or an instance of a class that implements a particular interface.&lt;/p&gt;&lt;p&gt;示例代码：&lt;br /&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;checkforTextView(View&amp;nbsp;v)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;(v&amp;nbsp;&lt;span style="color: #0000FF;"&gt;instanceof&lt;/span&gt;&amp;nbsp;TextView)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;This&amp;nbsp;is&amp;nbsp;a&amp;nbsp;TextView&amp;nbsp;control&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span style="color: #0000FF;"&gt;else&lt;/span&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;This&amp;nbsp;is&amp;nbsp;not&amp;nbsp;a&amp;nbsp;TextView&amp;nbsp;control&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Windows Phone&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;C# 的 &lt;strong&gt;is&lt;/strong&gt; 操作符关键字。Checks if an object is compatible with a given type. An is expression evaluates to true if the provided expression is non-null, and the provided object can be cast to the provided type without causing an exception to be thrown. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;示例代码： &lt;br /&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;foreach&lt;/span&gt;&amp;nbsp;(UIElement&amp;nbsp;ctrl&amp;nbsp;&lt;span style="color: #0000FF;"&gt;in&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;.ContentPanel.Children)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&amp;nbsp;(ctrl&amp;nbsp;&lt;span style="color: #0000FF;"&gt;is&lt;/span&gt;&amp;nbsp;TextBlock)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;TextBlock&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;else&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&amp;nbsp;(ctrl&amp;nbsp;&lt;span style="color: #0000FF;"&gt;is&lt;/span&gt;&amp;nbsp;TextBox)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;TextBox&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;作者：黎波&lt;br /&gt;博客：http://bobli.cnblogs.com/&lt;br /&gt;日期：2012年3月14日&lt;/p&gt;&lt;img src="http://www.cnblogs.com/bobli/aggbug/2395565.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/bobli/archive/2012/03/14/2395565.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/bobli/archive/2011/12/20/2294709.html</id><title type="text">精至手机药典iPhone版</title><summary type="text">精至手机药典iPhone版已经完成了第二版的开发和测试，正在等待AppStore的审批。已越狱的iPhone很快就能下载使用了。第二版加入了历史前进和后退导航，从历史打开页面，以及收藏和注释功能，大大提升了用户体验！启动界面主界面药品目录药品药品相互作用药物类别药品搜索相互作用搜索用药指南临床计算工具诊断评估工具收藏历史选项使用帮助官方网站：http://www.apocrest.com/官方博客：http://blog.sina.com.cn/jzhmed官方微博：http://weibo.com/wamuuApp Store：http://itunes.apple.com/cn/app/i</summary><published>2011-12-20T07:02:00Z</published><updated>2011-12-20T07:02:00Z</updated><author><name>黎波</name><uri>http://www.cnblogs.com/bobli/</uri></author><link rel="alternate" href="http://www.cnblogs.com/bobli/archive/2011/12/20/2294709.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/bobli/archive/2011/12/20/2294709.html"/><content type="html">&lt;p&gt;精至手机药典iPhone版已经完成了第二版的开发和测试，正在等待AppStore的审批。已越狱的iPhone很快就能下载使用了。第二版加入了历史前进和后退导航，从历史打开页面，以及收藏和注释功能，大大提升了用户体验！&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;启动界面&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/bobli/case/jingzhimed-iphone/jingzhimed_iphone_splash.png" width="320" border="0" height="480" /&gt;&lt;/p&gt;&lt;p&gt;主界面&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/bobli/case/jingzhimed-iphone/jingzhimed_iphone_home1.png" width="320" border="0" height="480" /&gt;&amp;nbsp;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/bobli/case/jingzhimed-iphone/jingzhimed_iphone_home2.png" width="320" border="0" height="480" /&gt;&lt;/p&gt;&lt;p&gt;药品目录&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/bobli/case/jingzhimed-iphone/jingzhimed_iphone_catalog1.png" width="320" border="0" height="480" /&gt;&amp;nbsp;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/bobli/case/jingzhimed-iphone/jingzhimed_iphone_catalog2.png" width="320" border="0" height="480" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/bobli/case/jingzhimed-iphone/jingzhimed_iphone_catalog3.png" width="320" border="0" height="480" /&gt;&lt;/p&gt;&lt;p&gt;药品&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/bobli/case/jingzhimed-iphone/jingzhimed_iphone_medicine1.png" width="320" border="0" height="480" /&gt;&amp;nbsp;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/bobli/case/jingzhimed-iphone/jingzhimed_iphone_medicine2.png" width="320" border="0" height="480" /&gt;&lt;/p&gt;&lt;p&gt;药品相互作用&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/bobli/case/jingzhimed-iphone/jingzhimed_iphone_interact1.png" width="320" border="0" height="480" /&gt;&amp;nbsp;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/bobli/case/jingzhimed-iphone/jingzhimed_iphone_interact2.png" width="320" border="0" height="480" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/bobli/case/jingzhimed-iphone/jingzhimed_iphone_interact3.png" width="320" border="0" height="480" /&gt;&lt;/p&gt;&lt;p&gt;药物类别&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/bobli/case/jingzhimed-iphone/jingzhimed_iphone_category1.png" width="320" border="0" height="480" /&gt;&amp;nbsp;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/bobli/case/jingzhimed-iphone/jingzhimed_iphone_category2.png" width="320" border="0" height="480" /&gt;&lt;/p&gt;&lt;p&gt;药品搜索&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/bobli/case/jingzhimed-iphone/jingzhimed_iphone_search1.png" width="320" border="0" height="480" /&gt;&amp;nbsp;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/bobli/case/jingzhimed-iphone/jingzhimed_iphone_search2.png" width="320" border="0" height="480" /&gt;&lt;/p&gt;&lt;p&gt;相互作用搜索&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/bobli/case/jingzhimed-iphone/jingzhimed_iphone_interact4.png" width="320" border="0" height="480" /&gt;&amp;nbsp;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/bobli/case/jingzhimed-iphone/jingzhimed_iphone_interact5.png" width="320" border="0" height="480" /&gt;&lt;/p&gt;&lt;p&gt;用药指南&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/bobli/case/jingzhimed-iphone/jingzhimed_iphone_guide1.png" width="320" border="0" height="480" /&gt;&amp;nbsp;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/bobli/case/jingzhimed-iphone/jingzhimed_iphone_guide2.png" width="320" border="0" height="480" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/bobli/case/jingzhimed-iphone/jingzhimed_iphone_guide3.png" width="320" border="0" height="480" /&gt;&lt;/p&gt;&lt;p&gt;临床计算工具&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/bobli/case/jingzhimed-iphone/jingzhimed_iphone_caltools1.png" width="320" border="0" height="480" /&gt;&amp;nbsp;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/bobli/case/jingzhimed-iphone/jingzhimed_iphone_caltools2.png" width="320" border="0" height="480" /&gt;&lt;/p&gt;&lt;p&gt;诊断评估工具&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/bobli/case/jingzhimed-iphone/jingzhimed_iphone_diagtools1.png" width="320" border="0" height="480" /&gt;&amp;nbsp;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/bobli/case/jingzhimed-iphone/jingzhimed_iphone_diagtools2.png" width="320" border="0" height="480" /&gt;&lt;/p&gt;&lt;p&gt;收藏&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/bobli/case/jingzhimed-iphone/jingzhimed_iphone_bookmark.png" width="320" border="0" height="480" /&gt;&lt;/p&gt;&lt;p&gt;历史&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/bobli/case/jingzhimed-iphone/jingzhimed_iphone_history.png" width="320" border="0" height="480" /&gt;&lt;/p&gt;&lt;p&gt;选项&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/bobli/case/jingzhimed-iphone/jingzhimed_iphone_options.png" width="320" border="0" height="480" /&gt;&lt;/p&gt;&lt;p&gt;使用帮助&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/bobli/case/jingzhimed-iphone/jingzhimed_iphone_help.png" width="320" border="0" height="480" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;官方网站：&lt;a href="http://www.apocrest.com/"&gt;&lt;font color="#000000"&gt;http://www.apocrest.com/&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;官方博客：&lt;a href="http://blog.sina.com.cn/jzhmed"&gt;&lt;font color="#000000"&gt;http://blog.sina.com.cn/jzhmed&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;官方微博：&lt;a href="http://weibo.com/wamuu"&gt;&lt;font color="#000000"&gt;http://weibo.com/wamuu&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;App Store：&lt;a href="http://itunes.apple.com/cn/app/id490834552" target="_blank"&gt;http://itunes.apple.com/cn/app/id490834552&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;作者：黎波&lt;br /&gt;博客：&lt;a href="http://bobli.cnblogs.com/"&gt;&lt;font color="#000000"&gt;http://bobli.cnblogs.com/&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;日期：2012年1月15日(2.0)，2011年12月20日(1.0)&lt;img src="http://www.cnblogs.com/bobli/aggbug/2294709.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/bobli/archive/2011/12/20/2294709.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/bobli/archive/2011/12/07/2279005.html</id><title type="text">[iOS]NSString常用代码</title><summary type="text">1.判断字符串是否为空 if([textlenght]==0){//emptystring}2.字符串连接NSString*str1=@"str1";NSString*str2=@"str2";NSString*result;//方法1result=[str1stringByAppendingString:str2];NSLog(result,nil);//方法2result=[NSStringstringWithFormat:@"%@%@",str1,str2];NSLog(result,nil);//方法3result=[@&amp;qu</summary><published>2011-12-07T04:29:00Z</published><updated>2011-12-07T04:29:00Z</updated><author><name>黎波</name><uri>http://www.cnblogs.com/bobli/</uri></author><link rel="alternate" href="http://www.cnblogs.com/bobli/archive/2011/12/07/2279005.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/bobli/archive/2011/12/07/2279005.html"/><content type="html">&lt;p&gt; &lt;/p&gt;&lt;p&gt;1.判断字符串是否为空 &lt;br /&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&amp;nbsp;([text&amp;nbsp;lenght]&amp;nbsp;==&amp;nbsp;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;empty&amp;nbsp;string&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;2.字符串连接&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;NSString&amp;nbsp;*str1&amp;nbsp;=&amp;nbsp;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;str1&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;;&lt;br /&gt;NSString&amp;nbsp;*str2&amp;nbsp;=&amp;nbsp;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;str2&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;;&lt;br /&gt;NSString&amp;nbsp;*result;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;方法1&lt;/span&gt;&lt;br /&gt;result&amp;nbsp;=&amp;nbsp;[str1&amp;nbsp;stringByAppendingString:str2];&lt;br /&gt;NSLog(result,&amp;nbsp;nil);&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;方法2&lt;/span&gt;&lt;br /&gt;result&amp;nbsp;=&amp;nbsp;[NSString&amp;nbsp;stringWithFormat:&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;%@%@&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;,&amp;nbsp;str1,&amp;nbsp;str2];&lt;br /&gt;NSLog(result,&amp;nbsp;nil);&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;方法3&lt;/span&gt;&lt;br /&gt;result&amp;nbsp;=&amp;nbsp;[&lt;span style="color: #800000;"&gt;@""&lt;/span&gt;&amp;nbsp;stringByAppendingFormat:&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;%@%@&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;,&amp;nbsp;str1,&amp;nbsp;str2];&lt;br /&gt;NSLog(result,&amp;nbsp;nil);&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;方法4&lt;/span&gt;&lt;br /&gt;NSMutableString&amp;nbsp;*ms&amp;nbsp;=&amp;nbsp;[[NSMutableString&amp;nbsp;alloc]&amp;nbsp;init];&lt;br /&gt;[ms&amp;nbsp;appendString:str1];&lt;br /&gt;[ms&amp;nbsp;appendString:str2];&lt;br /&gt;NSLog(ms,&amp;nbsp;nil);&lt;br /&gt;[ms&amp;nbsp;release];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;结果都是：str1str2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;一般推荐使用方法1，如果需要大量字符串连接推荐使用方法4，需要更少的内存开销。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;3.去除字符串首尾的空格和换行符&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;NSString&amp;nbsp;*text&amp;nbsp;=&amp;nbsp;[textView.text&amp;nbsp;stringByTrimmingCharactersInSet:[NSCharacterSet&amp;nbsp;whitespaceAndNewlineCharacterSet]];&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;4.多行书写字符串常量 &lt;br /&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;NSString&amp;nbsp;*str1&amp;nbsp;=&amp;nbsp;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;SELECT&amp;nbsp;[CustomerID],&amp;nbsp;[CustomerName]&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;FROM&amp;nbsp;[Customer]&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;WHERE&amp;nbsp;[CustomerID]&amp;nbsp;=&amp;nbsp;1234&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;NSString&amp;nbsp;*str2&amp;nbsp;=&amp;nbsp;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;SELECT&amp;nbsp;[CustomerID],&amp;nbsp;[CustomerName]&amp;nbsp;\&lt;br /&gt;FROM&amp;nbsp;[Customer]&amp;nbsp;\&lt;br /&gt;WHERE&amp;nbsp;[CustomerID]&amp;nbsp;=&amp;nbsp;1234&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;NSLog(str1,&amp;nbsp;nil);&lt;br /&gt;NSLog(str2,&amp;nbsp;nil);&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;结果都是：SELECT&amp;nbsp;[CustomerID],&amp;nbsp;[CustomerName]&amp;nbsp;FROM&amp;nbsp;[Customer]&amp;nbsp;WHERE&amp;nbsp;[CustomerID]&amp;nbsp;=&amp;nbsp;1234&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;注意字符串中每行结尾处的空格。这种字符串声明方式虽然看上去是多行，实际上字符串中并没有换行符，也就是说整个字符串实际上是一行。如果需要在字符串中换行，可以在字符串中加入换行符"\n"。这种声明方式一般用在需要在代码中多行显示字符串以便提高可读性，例如：SQL语句往往需要多行显示来提高可读性、较长的文本的段落之间需要分行显示以便更容易找到分段位置。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #0000ff;"&gt;此文将不断更新...&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;作者：黎波&lt;br /&gt;博客：&lt;a href="http://bobli.cnblogs.com/"&gt;&lt;font color="#000000"&gt;http://bobli.cnblogs.com/&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;日期：2011年12月7日&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/bobli/aggbug/2279005.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/bobli/archive/2011/12/07/2279005.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/bobli/archive/2011/12/02/2272446.html</id><title type="text">目标身高iPhone版</title><summary type="text">这是最近完成的一个iPhone app。《目标身高》根据各省的调查数据和身高遗传特点进行计算，来算算你家宝贝能长多高吧。 App Storehttp://itunes.apple.com/cn/app/id478325161作者：黎波博客：http://bobli.cnblogs.com/日期：2011年12月2日</summary><published>2011-12-02T09:40:00Z</published><updated>2011-12-02T09:40:00Z</updated><author><name>黎波</name><uri>http://www.cnblogs.com/bobli/</uri></author><link rel="alternate" href="http://www.cnblogs.com/bobli/archive/2011/12/02/2272446.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/bobli/archive/2011/12/02/2272446.html"/><content type="html">&lt;p&gt;这是最近完成的一个iPhone app。《目标身高》根据各省的调查数据和身高遗传特点进行计算，来算算你家宝贝能长多高吧。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/bobli/case/mobilepharm/target_height_iphone_1s.png" border="0" height="480" width="320" /&gt;&amp;nbsp;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/bobli/case/mobilepharm/target_height_iphone_2s.png" border="0" height="480" width="320" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/bobli/case/mobilepharm/target_height_iphone_3s.png" border="0" height="480" width="320" /&gt; &lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/bobli/case/mobilepharm/target_height_iphone_4s.png" height="480" width="320" /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;App Store&lt;/p&gt;&lt;p&gt;&lt;a href="http://itunes.apple.com/cn/app/id478325161"&gt;http://itunes.apple.com/cn/app/id478325161&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;作者：黎波&lt;br /&gt;博客：&lt;a href="http://bobli.cnblogs.com/"&gt;&lt;font color="#000000"&gt;http://bobli.cnblogs.com/&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;日期：2011年12月2日&lt;img src="http://www.cnblogs.com/bobli/aggbug/2272446.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/bobli/archive/2011/12/02/2272446.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/bobli/archive/2011/12/02/2272431.html</id><title type="text">目标身高Android版</title><summary type="text">这是最近完成的一个Android App。目标身高根据各省的调查数据和身高遗传特点进行计算，来算算你家宝贝能长多高吧。Android Market Pagehttps://play.google.com/store/apps/details?id=com.jingzhimed.targetheight作者：黎波博客：http://bobli.cnblogs.com/日期：2011年12月2日</summary><published>2011-12-02T09:31:00Z</published><updated>2011-12-02T09:31:00Z</updated><author><name>黎波</name><uri>http://www.cnblogs.com/bobli/</uri></author><link rel="alternate" href="http://www.cnblogs.com/bobli/archive/2011/12/02/2272431.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/bobli/archive/2011/12/02/2272431.html"/><content type="html">&lt;p&gt;这是最近完成的一个Android App。目标身高根据各省的调查数据和身高遗传特点进行计算，来算算你家宝贝能长多高吧。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/bobli/case/mobilepharm/target_height_android_1s.png" width="240" height="400" /&gt;&amp;nbsp;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/bobli/case/mobilepharm/target_height_android_2s.png" width="240" height="400" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Android Market Page&lt;/p&gt;&lt;p&gt;&lt;a href="https://play.google.com/store/apps/details?id=com.jingzhimed.targetheight"&gt;https://play.google.com/store/apps/details?id=com.jingzhimed.targetheight&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;作者：黎波&lt;br /&gt;博客：&lt;a href="http://bobli.cnblogs.com/"&gt;&lt;font color="#000000"&gt;http://bobli.cnblogs.com/&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;日期：2011年12月2日&lt;img src="http://www.cnblogs.com/bobli/aggbug/2272431.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/bobli/archive/2011/12/02/2272431.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/bobli/archive/2011/11/09/2242190.html</id><title type="text">[iOS]让Xcode 4.2生成的app支持老的iOS设备(armv6)</title><summary type="text">这几天遇到一个非常奇怪的问题，基于Xcode 4.2开发的app，导出的ipa安装包不能安装到iPod Touch 2上。Touch2固件版本是4.2.1，已越狱。iTunes、91手机助手、同步推试过了都不行。但是其他ipa文件可以成功安装到Touch2上。而Xcode 4.2生成的ipa包在iPhone 4、iPhone 3GS、iPod Touch 4都能安装成功并顺利运行，无论固件什么版本。初步分析的结果就是Xcode 4.2生成的app不支持Touch2。这几天找了一些朋友帮我测试ipa安装包，问一些有iOS开发经验的朋友，最终有个朋友提醒我Xcode 4.2中，Project-&amp;g</summary><published>2011-11-09T05:37:00Z</published><updated>2011-11-09T05:37:00Z</updated><author><name>黎波</name><uri>http://www.cnblogs.com/bobli/</uri></author><link rel="alternate" href="http://www.cnblogs.com/bobli/archive/2011/11/09/2242190.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/bobli/archive/2011/11/09/2242190.html"/><content type="html">&lt;p&gt;这几天遇到一个非常奇怪的问题，基于Xcode 4.2开发的app，导出的ipa安装包不能安装到iPod Touch 2上。Touch2固件版本是4.2.1，已越狱。iTunes、91手机助手、同步推试过了都不行。但是其他ipa文件可以成功安装到Touch2上。而Xcode 4.2生成的ipa包在iPhone 4、iPhone 3GS、iPod Touch 4都能安装成功并顺利运行，无论固件什么版本。初步分析的结果就是Xcode 4.2生成的app不支持Touch2。这几天找了一些朋友帮我测试ipa安装包，问一些有iOS开发经验的朋友，最终有个朋友提醒我Xcode 4.2中，Project-&amp;gt;Build Settings-&amp;gt;Architectures-&amp;gt;Release设置有关，经过修改，问题终于解决了，谢谢这位朋友！&lt;/p&gt;&lt;p&gt;原因分析：Xcode 4.2的Architectures设置默认只有armv7，也就是新的iOS设备，包括iPhone 3GS, iPhone 4, iPhone 4s, iPad, iPad2等，而iPhone, iPhone 3G, iPod Touch, iPod Touch 2属于armv6架构。&lt;/p&gt;&lt;p&gt;解决方法：将Architectures设置为armv6 armv7，如下图所示：&lt;/p&gt;&lt;p&gt;修改前：&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/bobli/ios/xcode42_architectures_before.png" border="0" height="239" width="583" /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;修改后：&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/bobli/ios/xcode42_architectures_after.png" border="0" height="240" width="567" /&gt;&lt;/p&gt;&lt;p&gt;这样设置后生成的ipa安装包就可以支持老的iOS设备了。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;另外，还要把Info设置中的Required device capabilitiess删掉，这样提交到AppStore后才会正确显示兼容老的iOS设备。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;作者：黎波&lt;br /&gt;博客：&lt;a href="http://bobli.cnblogs.com/"&gt;http://bobli.cnblogs.com/&lt;/a&gt;&lt;br /&gt;日期：2011年11月9日 &lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/bobli/aggbug/2242190.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/bobli/archive/2011/11/09/2242190.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/bobli/archive/2011/09/26/2191305.html</id><title type="text">[iOS]升级到 Xcode 4.1 后 sqlite3.h 引起 Expected declaration specifiers before &amp;#39;interface&amp;#39; 错误</title><summary type="text">今天在 Lion+Xcode 4.1 打开以前的项目出现 Expected declaration specifiers before 'interface' 错误，导致项目编译不通过，该项目之前在 Snow Leopard+Xcode 3.2.6 环境下编译正常。经过google找到解决方法如下：方法一：升级到 Xcode 4.2。方法二：修改所有 sqlite3.h 的引用路径#import "/usr/include/sqlite3.h"改成#import "sqlite3.h"原因是这两个头文件的版本不同，#import &amp;quo</summary><published>2011-09-26T03:37:00Z</published><updated>2011-09-26T03:37:00Z</updated><author><name>黎波</name><uri>http://www.cnblogs.com/bobli/</uri></author><link rel="alternate" href="http://www.cnblogs.com/bobli/archive/2011/09/26/2191305.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/bobli/archive/2011/09/26/2191305.html"/><content type="html">&lt;p&gt; 今天在 Lion+Xcode 4.1 打开以前的项目出现 Expected declaration specifiers before 'interface' 错误，导致项目编译不通过，该项目之前在 Snow Leopard+Xcode 3.2.6 环境下编译正常。&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/bobli/ios/lion_sqlite3_error.png" height="256" width="736" /&gt;&lt;/p&gt;&lt;p&gt;经过google找到解决方法如下：&lt;br /&gt;&lt;/p&gt;&lt;p&gt;方法一：升级到 Xcode 4.2。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;方法二：修改所有 sqlite3.h 的引用路径&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;#import "/usr/include/sqlite3.h"&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;改成&lt;/p&gt;&lt;p&gt;&lt;strong&gt;#import "sqlite3.h"&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;原因是这两个头文件的版本不同，#import "sqlite3.h" 实际上是调用了 /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/include/sqllite3.h。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;参考：&lt;a target="_blank" href="http://stackoverflow.com/questions/6836710/upgraded-to-xcode-4-1-and-sqlite3-h-is-causing-compilation-errors-where-it-didnt"&gt;http://stackoverflow.com/questions/6836710/upgraded-to-xcode-4-1-and-sqlite3-h-is-causing-compilation-errors-where-it-didnt&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;作者：黎波&lt;br /&gt;博客：&lt;a href="http://bobli.cnblogs.com/"&gt;http://bobli.cnblogs.com/&lt;/a&gt;&lt;br /&gt;日期：2011年9月26日&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/bobli/aggbug/2191305.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/bobli/archive/2011/09/26/2191305.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/bobli/archive/2011/09/24/2188369.html</id><title type="text">[转载]用手机玩转汽车 体验安吉星手机应用程序</title><summary type="text">转载说明：这是我在2010~2011年参与的一个项目，主要负责Windows Mobile端的应用程序开发。本项目的主要亮点是用户体验。为了在Windows Mobile平台上实现完美的用户体验，所有的界面元素都重新封装了特殊控件，并由控件所在的View统一绘图，从而兼顾了界面的美观与快速的反应。 腾讯汽车 原创报道组 2011年07月21日08:05[导读]家用汽车和智能手机都有着强劲的发展，但两者相互结合会有一个什么样的结果？看看上海安吉星手机应用程序来告诉我们如何玩转汽车的。用手机玩转汽车 体验安吉星手机应用程序家用汽车和智能手机都有着强劲的发展，但两者相互结合会有一个什么样的结果？看看</summary><published>2011-09-24T01:51:00Z</published><updated>2011-09-24T01:51:00Z</updated><author><name>黎波</name><uri>http://www.cnblogs.com/bobli/</uri></author><link rel="alternate" href="http://www.cnblogs.com/bobli/archive/2011/09/24/2188369.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/bobli/archive/2011/09/24/2188369.html"/><content type="html">&lt;p&gt;&lt;span style="color: #0000ff;"&gt;转载说明：这是我在2010~2011年参与的一个项目，主要负责Windows Mobile端的应用程序开发。本项目的主要亮点是用户体验。为了在Windows Mobile平台上实现完美的用户体验，所有的界面元素都重新封装了特殊控件，并由控件所在的View统一绘图，从而兼顾了界面的美观与快速的反应。 &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;腾讯汽车 原创报道组 2011年07月21日08:05&lt;br /&gt;&lt;br /&gt;[&lt;strong&gt;导读&lt;/strong&gt;]家用汽车和智能手机都有着强劲的发展，但两者相互结合会有一个什么样的结果？看看上海安吉星手机应用程序来告诉我们如何玩转汽车的。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;img style="font-family: Arial;" alt="用手机玩转汽车 体验安吉星手机应用程序" src="http://images.cnblogs.com/cnblogs_com/bobli/case/onstar/53450455.jpg" height="550" width="535" /&gt;&lt;/div&gt;&lt;p&gt;用手机玩转汽车 体验安吉星手机应用程序&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;家用汽车和智能手机都有着强劲的发展，但两者相互结合会有一个什么样的结果？看看上海安吉星手机应用程序来告诉我们如何玩转汽车的。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img alt="用手机玩转汽车 体验安吉星手机应用程序" src="http://images.cnblogs.com/cnblogs_com/bobli/case/onstar/53450432.jpg" height="380" width="550" /&gt;&lt;p&gt;安吉星是当前比较火热的&amp;#8220;人人-人机对话系统&amp;#8221;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img alt="用手机玩转汽车 体验安吉星手机应用程序" src="http://images.cnblogs.com/cnblogs_com/bobli/case/onstar/53450433.jpg" height="380" width="550" /&gt;&lt;p&gt;用手机就能轻松玩转汽车&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;其实说到安吉星系统，大家都不会陌生，尤其是上海通用的用户们，无论是凯迪拉克或是别克再者雪佛兰都有很多的车型在应用这一个系统，它提供便捷并且相对廉价的服务，并非像是那些只为中高端用户定制的一对一服务，别看只有后视镜上的3个按钮，但它的功能依旧十分强大，本次我们并非去带您体验安吉星，而是安吉星全新推出的手机应用程序。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;&lt;img alt="用手机玩转汽车 体验安吉星手机应用程序" src="http://images.cnblogs.com/cnblogs_com/bobli/case/onstar/53450434.jpg" height="380" width="550" /&gt;&lt;/div&gt;&lt;p&gt;当然要体验必须得在网上注册&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;首先我们要登陆到安吉星的官方网站去下载相关的安装文件，并通过当时注册安吉星的邮箱申请到账号，这里需要说明，手机应用系统可以一台手机对应一部车辆也可以多台手机对应一部车辆，或者一台手机对应多部车辆，这适合家庭和企业进行车辆的管理。&lt;/p&gt;&lt;p&gt;注册成功后，就像是我们操作手机微薄一样，便可以在网上操控自己的爱车。我们以目前雪佛兰最新上市的爱唯欧为例。首先用手机登陆安吉星后，你会看到自己车辆的状态，这包括剩余的燃油以及车辆已经行驶的里程，我相信这些最基本的东西已经可以让大家眼前一亮，当然强大的安吉星手机应用程序远不止这些。&lt;/p&gt;&lt;div&gt;&lt;p&gt;首先要说明的是，目前安吉星所推出的手机应用程序完全建立在智能手机的基础上，包括目前流行的苹果系列、HTC、三星等型号的手机，支持的手机操作系统包括：iPhone OS操作系统(包括iPhone 4等)、Android操作系统（包括摩托罗拉、HTC、三星、华为等）、Symbian操作系统（包括诺基亚等）、Windows Mobile操作系统 (包括HTC和三星等)以及黑莓操作系统。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;&lt;img alt="用手机玩转汽车 体验安吉星手机应用程序" src="http://images.cnblogs.com/cnblogs_com/bobli/case/onstar/53450435.jpg" align="middle" height="380" width="550" /&gt;&lt;/div&gt;&lt;p&gt;手机能实时显示车辆剩余燃油&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;&lt;img alt="用手机玩转汽车 体验安吉星手机应用程序" src="http://images.cnblogs.com/cnblogs_com/bobli/case/onstar/53450446.jpg" height="380" width="550" /&gt;&lt;/div&gt;&lt;p&gt;用手机随时了解车辆状态&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;img alt="用手机玩转汽车 体验安吉星手机应用程序" src="http://images.cnblogs.com/cnblogs_com/bobli/case/onstar/53450447.jpg" height="380" width="550" /&gt;&lt;/div&gt;&lt;p&gt;安吉星确实很贴心&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;接下来我们可以通过手机进行车辆的锁车和开锁功能，好比说当你出差在外地，但你有一个重要的文件落在你的车里，而你的同事继续这个文件，此时无论你在哪里，只要可以连接上安吉星，你都可以通过远程的指令让你的车在不到1分钟的时间内开锁，之后你可以轻轻松松的再锁上，这样即便相隔千里也不会误事，同样这样的情况也可以用在车辆需要救援，车主不在身边的时候。&lt;/p&gt;&lt;div&gt;&lt;p&gt;此时的手机就像是一个超远程的车辆遥控器，当然它也可以做到远程遥控启动，但目前刚刚推出的安吉星还不完全支持，有待后期的完善之后才能供大家使用。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img alt="用手机玩转汽车 体验安吉星手机应用程序" src="http://images.cnblogs.com/cnblogs_com/bobli/case/onstar/53450448.jpg" height="380" width="550" /&gt;&lt;/div&gt;&lt;p&gt;配备安吉星的雪佛兰爱唯欧&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;div&gt;&lt;img alt="用手机玩转汽车 体验安吉星手机应用程序" src="http://images.cnblogs.com/cnblogs_com/bobli/case/onstar/53450449.jpg" height="380" width="550" /&gt;&lt;/div&gt;&lt;p&gt;随时了解车辆状态&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;随后安吉星还可以随时帮助车主检查车辆的情况，这通过车辆随处可见的感应器件将数据传输到行车电脑再通过CDMA的数据传输到安吉星服务器，最终供客户下载查阅。这免除了车主经常要跑4S店并且避免了许多潜在的隐患。&lt;/p&gt;&lt;p&gt;安吉星本身也具有防盗功能，如果车辆以外被盗，安吉星会立刻通过系统进行定位，并通知当地的相关部门。其实拥有安吉星，完全可以省去车辆每年盗抢险那部分，节省下来的银两使用安吉星能够获得更多的增值服务。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img alt="用手机玩转汽车 体验安吉星手机应用程序" src="http://images.cnblogs.com/cnblogs_com/bobli/case/onstar/53450452.jpg" height="380" width="550" /&gt;&lt;p&gt;安吉星很亲民&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;中国市场上第一款也是唯一一款车载系统手机应用程序，目前车主已经可以通过远程了解到爱车的车况以及一些操作。此外，2011款的凯迪拉克凯雷德，SRX, 别克新君越和昂科雷这四款车型的用户也能用智能手机远程启动车辆。&lt;/p&gt;&lt;p&gt;在中国众多车载信息服务商中，安吉星是唯一通过独自运营的呼叫中心为客户提供车载信息服务。目前，位于上海的安吉星客户服务中心为超过30万的中国注册用户提供服务。仅今年五月份，安吉星就刷新了每月累计呼叫次数，达到创纪录的一百万次。&lt;/p&gt;&lt;p&gt;安吉星目前推出多款新的套餐供通用汽车用户选择，用户可以根据自己的需求去制定相关的服务，可以说目前在国内，把手机应用延伸到汽车领域的服务商少之又少，安吉星的手机应用系统会发挥更大的优势服务于广大消费者，如果您对此感兴趣，也不妨先试为快。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;strong&gt;版权声明：本文系腾讯汽车独家稿件，版权为腾讯汽车所有。欢迎转载，请务必注明出处（腾讯汽车）及作者，否则必将追究法律责任。&lt;/strong&gt;&lt;br /&gt;&lt;p&gt;原文：&lt;a target="_blank" href="http://auto.qq.com/a/20110721/000159.htm"&gt;http://auto.qq.com/a/20110721/000159.htm&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/bobli/aggbug/2188369.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/bobli/archive/2011/09/24/2188369.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
