- 博客(69)
- 资源 (4)
- 收藏
- 关注
原创 如何运用Xcode创建单元测试UnitTest
如何运用Xcode创建单元测试UnitTest一. UnitTest背景知识单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开
2013-04-25 23:09:16 5855
原创 UIAlertView点击灰色部分dismiss
模态弹出来的窗口,需要点击窗口以外的区域,也就是模态区域让这个窗口消失。一般这种场景会出现在iPad里,当你modalPresentationStyle为UIModalPresentationFormSheet时,会有这种需求。网上找了一下,这种东东还真能实现,UIAlertView也可以实现。- (IBAction)showAlert:(id)sender { alert = [[UIAle
2013-04-23 22:59:25 2972
转载 了解Objective-C的动态特性
Objective-C具有相当多的动态特性,基本的,也是经常被提到和用到的有动态类型(Dynamic typing),动态绑定(Dynamic binding)和动态加载(Dynamic loading)。这些动态特性都是在Cocoa程序开发时非常常用的语言特性,而在这之后,OC在底层也提供了相当丰富的运行时的特性,比如枚举类属性方法、获取方法实现等等。虽然在平常的Cocoa开发中这些较底
2013-03-25 22:55:50 2825
原创 UITextField滑动防止被键盘挡住 终极解决方案
问题:当屏幕下方有textfield时会被弹出的键盘挡住,用户体验不太好。坚决方法:使用scroll view 当textfield成为first responder时 将textfield滑动到键盘上面网上这方面的解决方法有很多,但是都不够完美,比如无法真确处理手持方向改变时keybord高度不一样的情况,无法兼容iPad下键盘和iPhone高度不一样,动画不和谐,实现过于复
2013-02-20 00:22:53 5214 1
原创 Robocode Tank AI 实例
最近公司流行玩Robocode,这是一个坦克机器人战斗仿真引擎,里面可以写一些自己的Tank来互相战斗。主要是使用了躲避子弹和避墙的思想package azrael;import robocode.*;//import java.awt.Color;// API help : http://robocode.sourceforge.net/docs/robocode/roboco
2013-01-31 23:51:55 3652
原创 iOS图片倒影效果的2种实现
实现一使用一个继承自UIView的类来包含要实现倒影效果的图片,重写这个UIView子类的绘图方法,以实现图片于倒影,然后把这个View 添加到相应的地方显示。代码:CKReflectionImage.h#import @interface CKReflectionImage : UIView {@private UIImage *image
2013-01-30 00:28:43 4464 1
原创 Objective C TCP 通讯实例
TCP通讯实例Communicator.h #import @interface Communicator : NSObject { @public NSString *host; int port;} - (void)setup;- (void)open;- (void)close;- (void)stream:(NSStream *)stream ha
2013-01-23 00:50:49 6554
原创 用Eclipse 统计代码行数小技巧
今天公司SQA问我目前项目代码行数有多少,我当时就是想,以前好像写过类似的统计工具但是一时又找不到公司网络又不能下载,所以想想eclipse是不是又类似功能,找了下没有,但突然一想有一个转弯方法:统计工程里面的\n个数1. 按 CTRL+H 打开查找对话框 选择file search按下图方式输入注意: I. 输入查找\n, 勾选正则式选项 II.
2013-01-04 00:11:34 31517 8
原创 Objective C Log日志提高 预定义宏使用
使用NSLog记录日志是很方便的操作,但是有时候也希望能够像C/C++编程一样使用一些预定义的宏,比如获取当前文件名、行号等,在XCode中其实也有这样的功能。XCode的c预处理器提供了一些标准宏,另外Objective-C语言还提供了隐含的_cmd参数,可以用来获取当前方法的selector,以及将selector与class转换为字符串的函数。可以在NSLog中使用这些宏及函数来增强
2012-12-26 00:28:37 3880
原创 Foundation和Core Foundation掺杂使用桥接 Toll-Free Bridging
在cocoa application的应用中,我们有时会使用Core Foundation(CF),我们经常会在Objective-C和CF之间进行转化。系统使用arc的状态下,编译器不能自动管理CF的内存,这时候你必须使用CFRetain和CFRelease来进行CF的内存的管理。具体的CF内存管理规则见: Memory Management Programming Guide fo
2012-12-25 00:03:44 2920
原创 Objective C ARC下的单例模版宏 ARC Singleton template
之前写过一篇关于非ARC的单例模版宏的文章地址但现在ARC的使用越来越广泛,原来的模版宏可能已经不是很适应,那介绍一下ARC版的模版宏的写法和用法写法ARCSingletonTemplate.h#define SYNTHESIZE_SINGLETON_FOR_HEADER(className) \\+ (className *)shared##class
2012-12-07 02:19:50 5018 3
原创 cocos2d 学习之路 (一)
这个系列的文章纪录下我的cocos2d学习,希望可以帮助到同样热爱ios的朋友。介绍 Cocos2D是iPhone开发中一个非常有用的库,它可以让你在创建自己的iPhone游戏时节省很多的时间。它具有很多的功能,比如sprite(精灵)扶持,非常酷的图形效果,动画效果,物理库,音频引擎等等。你完全可以免费把它用于商业开发而获得收益。复杂讲,Cocos2d-iPhone是基于
2012-12-06 00:15:55 5430
原创 UIImageView模糊, 边缘被切割问题
今天发现一个奇怪的问题,有一个8x8像素的黑色圆点图片。如果把UIImageView 的frame的x,y设置成一个*.5时,类似下面UIImageView *imageView = [UIImageView initWithImage:@"dot.png"];imageView.frame = CGRectMake(100.5, 100.5, imageView.frame.size.wi
2012-11-23 00:06:20 4843
原创 iOS 6 手持方向处理
iOS6手持方向处理 从iOS 5的应用程序更新到iOS6很多特性没法正常工作。主要的问题是,有一些API在新的SDK中已被弃用。其中手持方向的判断就是很明显的一个存在的问题假如你应用程序只有一个屏要是横向,其它的屏都要是纵向。iOS5的解决方案在应用程序的Info.plist文件,Supported interface orientations应该只包含一个项目,
2012-11-21 00:18:32 3149
原创 XCode 应用国际化设置
1.本地化应用程序中的字符串1.创建字符串文件(1)在Supporting Files包下新建一个String File。步骤如下: 注意:将文件命名为Localizable.strings(2)添加国际化文件。 选中Localizable.strings文件,打开File Inspector,添加想要显示的语言
2012-11-15 00:07:01 7019
原创 UIControl 使用全面解析
前面写过UILable 使用全面解析 UIButton 使用全面解析 UITextField 使用全面解析 它们有共同父类UIControl,对UIControl的理解有助全面理解iOS中的控件。UIKit提供了一组控件:UISwitch开关、UIButton按钮、UISegmentedControl分段控件、UISlider滑块、UITextField文本字段控件、UIPag
2012-11-06 23:54:20 2954
原创 UILable 使用全面解析
//创建uilabel UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(20, 40, 280, 80)]; //设置背景色 label.backgroundColor = [UIColor grayColor]; //设置tag label
2012-11-06 00:35:17 4726
原创 UIButton 使用全面解析
一、创建两种方法:1. 常规的 initWithFrame UIButton *btn1 = [[UIButton alloc]initWithFrame:CGRectMake(10, 10, 80, 44)]; 对代码创建View(UIControl继承自UIView,所以也是view)不甚了解的请参看:《有关View的几个基础知识点》
2012-11-05 00:18:25 5875 5
原创 UITextField 使用全面解析
//初始化textfield并设置位置及大小 UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, 30)]; //设置边框样式,只有设置了才会显示边框样式 text.borderStyle = UITextBorderStyleRoundedRect;
2012-11-02 00:04:21 5602 2
原创 Objective-C #define 用法解析
Objective-C : #define 用法解析在 C 语言中,预处理代码 (Preprocessor) 是非常强大的工具,能让你的代码变得更加易读和易改。利用预处理代码,你可以重新定义代码的一部分,使得你的代码更适合你的风格。预处理代码 (Preprocessor) 在代码编译之前被提前处理。预处理代码均由一个井号 (#) 打头。1. 关于 #define#def
2012-10-26 01:10:37 14994
原创 Objective c LLVM 4.0 的新特性
Objective c LLVM 4.0 的新特性在最新的 Xcode 4.4 中,增加了许多新特性。其中包括更方便的代码输入,这得益于 LLVM 编译器 4.0 的更新。这一更新可大大提高写代码的效率。1. 所有的 NSNumber 表达从 Xcode 4.4 起,所有的 [NSNumber numberWithInt: 10] 之类的表达现在都可以写作 @10,如:
2012-10-19 20:13:15 3164
原创 iOS 6 Secure密码UITextField造成非密码UITextField退格清空Bug
今天客户报了一个应用在iOS6上的bug,比如有一个secureTextEntry为Yes的UITextField和一个普通的UITextField,重现步骤:1. 点击普通的UITextField输入类容,2. 点击密码UITextField输入内容,3. 点击普通的UITextField重新获得焦点,4. 接着点击键盘上的退格键,结果:这时会发现普通的UITextField被清空了
2012-10-16 01:19:54 4933 7
原创 Objective-C中@private、@protected、@public 解析
Objective-C中,类的实例化变量的范围有@private、@protected、@public。他们代表的意思和C++中相同,只是前面添加了一个@符号。下面介绍一下他们代表的范围:指令意思@private作用范围只能在自身类@protected作用范围在自身类和继承自己的子类,什么都不写,默认是此属性。
2012-10-12 01:55:14 13125
原创 自适应宽高UILable
有时一个UILable的text内容是变化的,而且差异有很大,需求上要求UILabel的大小高宽能够自适应text的内容。代码例子:myLable=[[UILabel alloc] initWithFrame:CGRectMake(0, 23, 175, 33)]; [myLable setFont:[UIFont fontWithName:@"Helvetica" size:10.0]]
2012-10-10 01:34:28 5285
原创 iOS 禁用多按钮同时点击效果
公司里的测试们总是喜欢在一些并不是关键点上纠结Bug,最常见Screen里有多个可以点击的按钮或者视图,如果同时点击它们的话可能会出现各种错误异常之类的,而测试特别津津乐道于此类问题,看到有的项目为了修复此类问题竟然使用一个BOOL来标记判断然后维护起来极其恐怖,其实有非常简单的方法实现[view setExclusiveTouch:YES];官方文档解释exclusiveTouc
2012-10-08 23:19:26 4620
原创 五子棋的棋盘Android版
五子棋的棋盘Android版实现,具体上下文可以参考上一篇的五子棋AI实现中的代码import java.util.ArrayList;import java.util.List;import android.content.Context;import android.content.res.Resources;import android.graphics.Bitmap;impor
2012-09-28 14:52:17 2845 1
原创 五子棋AI算法 Java实现
五子棋AI算法 也算是一个典型的游戏AI算法,一些棋类的AI算法都可以参考实现,下面是Java实现代码棋盘抽象接口import java.util.List;public interface IChessboard { //取得棋盘最大横坐标 public int getMaxX(); //最大纵坐标 public int getMaxY(); //取得当前所有空白点,
2012-09-18 23:03:46 16949 7
原创 Objective C Foundation基础框架
iOS Foundation基础框架就是以Foundation.h头文件的库#import Mac OS X和iOS都使用了Foundation基础框架。该框架中有很多日后开发常用的API,非常基础重要。以下就常用的类和结构做个介绍。NSObjctNSObject类,是ObjC类族中的根类。NSObject有一些高级特性支持,在灵活和高效开发中十分常用。perform…方法和
2012-09-17 21:57:31 4634 1
原创 Objective-C KVO 编程 改善现有iOS代码设计
KVC很多人都知道,那么什么是KVO呢?Key Value Observing,直译为:基于键值的观察者。KVO的优点当有属性改变,KVO会提供自动的消息通知。这样的架构有很多好处。首先,开发人员不需要自己去实现这样的方案:每次属性改变了就发送消息通知。这 是KVO机制提供的最大的优点。因为这个方案已经被明确定义,获得框架级支持,可以方便地采用。开发人员不需要添加任何代码,不需要设计自己的观
2012-09-09 22:42:24 4689
原创 Objective C KVC编程
KVC概述KVC是KeyValue Coding的简称,它是一种可以直接通过字符串的名字(key)来访问类属性的机制。而不是通过调用Setter、Getter方法访问。当使用KVO、Core Data、CocoaBindings、AppleScript(Mac支持)时,KVC是关键技术。使用KVC、KVO的优势通过规定了一组通用的Cocoa命名法则、调用规则等,实现了如下功能: 1
2012-09-07 23:44:52 2245
原创 CoreData 理解和编程
CoreData是对sqlite数据库的一个封装.sqlite数据库操作的基本流程是, 创建数据库, 再通过定义一些字段来定义表格结构, 可以利用sql语句向表格中插入记录, 删除记录, 修改记录, 表格之间也可以建立联系.这个过程出现了, 表格的结构(schema), 所有表格的结构和相互联系构成整个数据库的模型, 数据库存放的方式(可以是文件或者在内存), 数据库操作, sql语句(主
2012-08-30 23:15:15 2811
原创 Objective-C 单例模式写法以及单例模式模板宏
Objective-C Singleton 单例模式解析,单例模式就是只有一个实例,确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类。objective c 单例模式,objective c 设计模式,objective c singleton 。单例指一个唯一的,由全局共享的对象,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这
2012-08-28 22:03:26 3938 5
原创 UIApplication 用法解析
UIApplication,代表的是整个应用做的事,因此每个程序只能有一个,系统使用的是单例模式,就是上面的[UIApplication sharedApplication]来得到一个实例。这个单例实例是在系统启动时由main函数里面的UIApplicationMain方法生成,就是每个程序里都有的AppDelegate,它实现了UIApplicationDelegate的Protocol,也就
2012-08-27 21:00:46 2647
原创 Objective-C NSString使用方法解析
1//创建字符串对象数组 NSArray *array = [str componentsSeparatedByString:@"@"];//就是以@为标示 输出看看啦 int count=[array count]; int i; for(i=0;i<count;i=i+4) { printf("%i: %s\n",i,[[array objectAtIndex:i] UT
2012-08-26 22:26:04 2866
原创 Maven 小结I
Maven 是为 Java 开发人员提供的一个极为优秀的构建工具,您也可以使用它来管理您的项目生命周期。作为一个生命周期管理工具,Maven 是基于阶段操作的,而不像 Ant 是基于 “任务” 构建的。Maven 完成项目生命周期的所有阶段,包括验证、代码生成、编译、测试、打包、集成测试、安装、部署、以及项目网站创建和部署。为了更好地理解 Maven 和传统构建工具的不同,我们来看看构建一个 J
2012-05-29 23:10:55 2486
原创 深入理解JAR包
对于大多数 Java 开发人员来说,JAR 文件及其 “近亲” WAR 和 EAR 都只不过是漫长的 Ant 或 Maven 流程的最终结果。标准步骤是将一个 JAR 复制到服务器(或者,少数情况下是用户机)中的合适位置,然后忘记它。事实上,JAR 能做的不止是存储源代码,您应该了解 JAR 还能做什么,以及如何进行。在这一期的 5 件事 系列中,将向您展示如何最大限度地利用 Java Arch
2012-05-26 01:47:25 2564
原创 Spring工具类详解
Spring 不但提供了一个功能全面的应用开发框架,本身还拥有众多可以在程序编写时直接使用的工具类,您不但可以在 Spring 应用中使用这些工具类,也可以在其它的应用中使用,这些工具类中的大部分是可以在脱离 Spring 框架时使用的。了解 Spring 中有哪些好用的工具类并在程序编写时适当使用,将有助于提高开发效率、增强代码质量。文件资源操作文件资源的操作是应用程序中常见的功能,如当上传
2012-05-17 00:28:58 3578
原创 深入理解 Java Collections API (II)
java.util 中的 Collections 类旨在通过取代数组提高 Java 性能。如您在 第 I 部分 中了解到的,它们也是多变的,能够以各种方式定制和扩展,帮助实现优质、简洁的代码。Collections 非常强大,但是很多变:使用它们要小心,滥用它们会带来风险。1. List 不同于数组Java 开发人员常常错误地认为 ArrayList 就是 Java 数组的替代品。Colle
2012-05-16 00:19:12 1202
原创 深入理解 Java Collections API (I)
对于很多 Java 开发人员来说,Java Collections API 是标准 Java 数组及其所有缺点的一个非常需要的替代品。将 Collections 主要与 ArrayList 联系到一起本身没有错,但是对于那些有探索精神的人来说,这只是 Collections 的冰山一角。1. Collections 比数组好刚接触 Java 技术的开发人员可能不知道,Java 语言最初包括数
2012-05-13 00:44:01 998
原创 Servlet 3.0 入门
Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布。该版本在前一版本(Servlet 2.5)的基础上提供了若干新特性用于简化 Web 应用的开发和部署。其中有几项特性的引入让开发者感到非常兴奋,同时也获得了 Java 社区的一片赞誉之声:异步处理支持:有了该特性,Servlet 线程不再需要一直阻塞,直到业务处理完毕才能再输出响应,最后才结
2012-04-25 20:17:22 1465
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人