iOS 开发中使用正则表达式-暨 RegexKitLite 库的用法

在 iOS 开发中要用正则表达式的话,至少有三种选择:

1. 系统自带的  NSString 和 NSMutableString 相关的方法
2. RegexKit Framework - http://regexkit.sourceforge.net
3. RegexKitLite - http://regexkit.sourceforge.net/RegexKitLite/

NSString 和 NSMutableString 里像

- (NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask;
- (NSUInteger)replaceOccurrencesOfString:(NSString *)target withString:(NSString *)replacement
                                 options:(NSStringCompareOptions)options range:(NSRange)searchRange;

带有 NSStringCompareOptions 参数的方法就可以支持正则表达式,只要对于 NSStringCompareOptions 参数取值中含有 NSRegularExpressionSearch 这个 Mask 值即可。

RegexKit Framework 用的是 PCRE(Perl Compatible Regular Expressions) 库,可能是我们熟悉正则表达式语法,但需要引入 PCRE 静态库。

RegexKitLite,看链接它与 RegexKit Framework 出自一家,但它用的是 Mac 自带的 ICU(International Components for Unicode) 库,所以语法上与 RegexKit Framework 是不一样的,且引入它也较简单。 阅读全文 >>

类别: iOS. 标签: , . 阅读(3,433). 评论(0) »

在FCKEditor中使用插件UGeSHi-GeSHi实现代码高亮显示

本人安装了一个个人知识库管理系统 Knowledgeroot,选定了其中所见即所得编辑器比较好用的是 FckEditor,又再需要给它配上一款代码高亮的插件,于是找来了 UGeSHi-GeSHi。下面是从网络上摘来的在 FckEditor 中如何安装 UGeSHi-GeSHi 插件。

什 么是UGeSHi?UGeSHi是一个连接器,它把FCKEditor与GeSHi(采用PHP编程语言写的代码高亮插件,目前它已能高亮100多种程序 语言)紧密的结合在一起,您可以称为它为FCK插件,也可以称它为连接器(因为代码高亮的核心文件不是本人编写,本人只编写了其与FCKEditor整合 的过程)。

UGeSHi的功能:高亮程序代码,使程序代码美观且易读。

为什么采用GeSHi作为核心文件?原因很简单,因为GeSHi高亮足够完美,而且支持高亮的程序语言也很完善。

UGeSHi能高亮多少种程序语言?粗略的说可以高亮100多种,具体细节看下表: 阅读全文 >>

类别: Web/JS. 标签: , . 阅读(124). 评论(0) »

UIView 中的控件事件穿透 Passthrough 的实现

我们在有多个 UIView 层叠时,比如一个按钮被一个 UIView 遮盖时,想要在点击最上层的 UIView 时能触发按钮的相应事件,我们该如何实现呢,初步可以想到几种办法:

1. 把按钮上层的所有 UIView 的 userInteractionEnabled 属性设置为 NO,要是 UIView 有自己的交互事件该如何办呢?而且这个 userInteractionEnabled 不能动态设置,等到点击后决定设置它的 NO 是没用的

2. UIView 接受到点击事件后主动去触发下面按钮的点击,这时的关题有三,按钮没有点击过程中的交换效果、多层 UIView 时不切实际,逐层下传吗、还有就是其他双击、三击或别的手势如何处理

我也一直被前面两种方式纠缠着,同时也让 UIPopoverController 的 NSArray *passthroughViews 属性提醒着,因为对于 UIPopoverController,设置到它的 passthoughViews 属性中的控件事件可以完全从 UIDimmingView 下透出来。但苦于不可能看到 UIPopoverController 的源码,还是后面一而再的 Google 终于发现了 UIView 的方法:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event;   // recursively calls -pointInside:withEvent:. point is in the receiver's coordinate system 阅读全文 >>

类别: iOS. 标签: , , . 阅读(11,491). 评论(1) »

Windows 平台下的 TextMate:E-TextEditor (附下载)

在 Mac 平台下慢慢习惯了 TextMate 文本编辑器,功能很强,丰富的 Bundle 支持,于是想在 Windows 下找到一款类似的软件,那就是 E-TextEditor。E-TextEditor 可以支持许许多多的编程语言,关键它可以直接使用 TextMate 的 Bundle,这就能与 TextMate 达成一致了。

官方当前版本是 2.0.2,可在 http://www.e-texteditor.com/ 下载,可试用 30 天,可自己在网上找找,这里列出两方法:

1. 破解文件覆盖

只找到 2.0a 的 e.exe 文件,在 E-TextEditor.v2.0a.Cracked-EAT 同时有安装文件和 e.exe 文件下载

2. 修改注册表法

试用期 30 天记在 HKEY_CURRENT_USER\Software\e\CLSID2, 所以只要试用期快到了,把这个键删了就行,E-TextEditor 在试用期间好像也没有功能上的限制。 阅读全文 >>

类别: Ruby. 标签: , . 阅读(3,142). 评论(2) »

走近 Ruby 的世界(六)

对于 Block,可以用 {} 或 do...end 来调用,如:

3.times { print "Ruby!" }   #可以写成 3.times do print "Ruby!" end

1.upto(10) do |x|
    print x
end
#也可以写成  1.upto(10) {|x| print x}  

一般是多行时用 do...end,单行时用 {}

但对于 module、class、method 的声明不能像 C/Java 那样用 {},要用 ...end 来定义。 阅读全文 >>

类别: Ruby. 标签: , . 阅读(47). 评论(0) »

走近 Ruby 的世界(五)

Ruby 单行注释用 #,没有 /* */ 这样的多行注释方式,但是可以用文档注释方式来进行多行注释:

=begin 注释描述
       中间的都是注释内容
=end

文档注释,像 Java 的 Javadoc, .net 的 ndoc,Ruby 也有 rdoc,Ruby 的 文档注释是也是在 method,class 和 module 定义之前进行注释的,注释的内容给 rdoc 生成 HTML 帮助文档,也给 ri 用的。也有一套语法,用 # = Headings 这样的语法,还支持些 HTML 代码。

Ruby 看到全大写的标识符,如 PI,还有像 LikeThis 或 LIKE_THIS 这样的标识符就认为是常量,对它们重新赋值就会告警:

warning: already initialized constant LikeThis

命名成 like_this 就是变量,这也是 Ruby 的约定优于配置,常量就是大写命名。 阅读全文 >>

类别: Ruby. 标签: , . 阅读(48). 评论(0) »

iPhone中Png图片格式的研究

有时候我们看到一个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在编译的过程中,将图片进行了优化,实际上它已经不是一个png图片了。
这边有一些apple iPhone png自己格式的一些说明
http://iphonedevwiki.net/index.php/CgBI_file_format 阅读全文 >>

类别: iOS. 标签: , . 阅读(901). 评论(0) »

Objective-C 对 URL 进行 URLEncode 编码

在 iOS 程序访问 HTTP 资源时需要对 URL 进行 Encode,比如像拼出来的 http://unmi.cc?p1=%+&sd f&p2=中文,其中的中文、特殊符号&%和空格都必须进行转译才能正确访问。

在 Java、.net 和 JS 中都有相应的 encodeURL 方法可用,在 Objective-C 语言中,你可以试下

- (NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)enc;

来对完整的 URL(带请求参数的)进行编码,比如执行下面的代码:

 NSString *url=@"http://unmi.cc?p1=%+&sd &p2=中文";
 NSString *encodedValue = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

阅读全文 >>

类别: iOS. 标签: , , . 阅读(18,893). 评论(0) »

走近 Ruby 的世界(四)

Ruby 解释器给我们提供了四个常用的命令行工具,ruby、irb、ri 和  gem。动态脚本语言的解释器类似工具的使用方法基本一致的,逐个来看下它们的用法:

1. ruby:脚本解释器,直接执行脚本或脚本文件

% ruby -e 'puts "hello world!"'
% ruby hello.rb

ruby 显示输出可以用三种方法:print、puts 和 p,print 和 puts 都会把操作对象的 to_s 返回值输出,只是 puts 会在输出内容没有换行时加上一个换行,有则和 print 是一样的。例如 puts "Hello World!" 就是 print "Hello World!\n",puts "Hello World!\n" 也是  print "Hello World!\n"。p 会调用对象的 inspect 方法进行输出,最后加不加换行与 puts 的规则是一样的。

2.    irb:(Interactive RuBy) 是个 Ruby 的交互命令行,可用来测试一些 Ruby 的特性,不过有 TextMate 那样的工具基本不会去用它。你还能在 irb 的 shell 下再次输入 irb 启动一个子 shell。 阅读全文 >>

类别: Ruby. 标签: , , , , . 阅读(124). 评论(0) »

NSNotificationCenter 的使用详解

通常我们在 iOS 中发生什么事件时该做什么是由 Delegate 实现的,例如 View 加载完后会触发 viewDidLoad。  Apple 还为我们提供了另一种通知响应方式,那就是 NSNotification,系统中(UIKeyboardDidShowNotification 等) 以及某些第三方组件(例如 ASIHTTPRequest 的 kReachabilityChangedNotification 等)。

NSNotificationCenter 较之于 Delegate 可以实现更大的跨度的通信机制,可以为两个无引用关系的两个对象进行通信。NSNotificationCenter 的通信原理使用了观察者模式:

1. NSNotificationCenter 注册观察者对某个事件(以字符串命名)感兴趣,及该事件触发时该执行的 Selector 或 Block
2. NSNotificationCenter 在某个时机激发事件(以字符串命名)
3. 观察者在收到感兴趣的事件时,执行相应的 Selector 或 Block 阅读全文 >>

类别: iOS. 标签: , . 阅读(4,738). 评论(0) »
Page 30 of 102« First...1020...2829303132...405060...Last »