以前,实例变量必须写在文件中,如这样:
@interface Person : NSObject{
NSString *name;
}
刚开始这样用的时候,觉得这不和常理啊,实例变量,为什么要放在公共的h文件中呢,应该放在实现的文件中才对。
Xcode4.2默认使用llvm做编译,带来了一些改变,其中,就是可以在m文件中声明实例变量:
@implementation Person{
NSString *name;
}
如果你这样写,肯定会编译时报错的:

有人选择把变量声明放在switch语句之前,这样可能会造成混乱,变量的声明超出了自己的作用域。
其实很简单,给case加花括号即可:

在ObjC里,没有java的private关键字,因此方法是公有的,其他对象都可以调用。
看代码:
@interface Person : NSObject
-(void) aPrivateMethod;
@end
一般来说,方法的声明都是在h文件中写的,这样的缺点是其他代码也可以使用该方法。有些方法其实只是给类内部使用的,暴露在外面可能会带来很多问题。 Continue Reading »
MRC这个词应该是我编的,ARC,Automatic Reference Counting,手工引用计数就应该是:Manual Reference Counting,那就应该是MRC喽,不过没有见人这样用过。
ARC引入了新的语句管理自动释放池语法:
@autoreleasepool {
// Code, such as a loop that creates a large number of temporary objects.
}
测试了一下,在ARC情况下和MRC情况下对象的释放有不同。
这里主要参考了Apple官方文档:Transitioning to ARC Release Notes
在支持iOS5的Xcode4中,创建项目会看到这样的选项:

这是iOS5的新特性,自动对象引用计数。默认情况下是勾选的,当然你可以取消它,按照以前的方式手动释放对象内存。
使用的无线路由器是WRVS4400N,应该是很强大的无线设备了。但是最近一段时间,在办公室经常ping包timeout。
更新了最新的firmware,取消防火墙和其他一些安全上的限制,效果也不明显。
安装了KisMaC,一个在mac系统下扫描无线端口的应用。不用不知道,一用吓一跳。
在我周围有那么多无线设备,很多都是hidden或者没有ssid的。而且大量的和我路由器的channel冲突,怎么这么多人用channel11呢。
改为用的最少的channel5,目前来看,问题得到了解决。

这个工具的下载地址在:http://www.macupdate.com/app/mac/10133/kismac
它的官网我访问不了。
以前界面中的阴影,需要依赖作图工具生成带阴影的底图。使用css3可以很好的解决这个问题。
比如,这是个简单的代码:
<body>
<div id=‘content’></div>
</body>
如果没有使用css3阴影,比如css如下:
#content{
height: 200px;
width: 400px;
margin: 10px auto;
background: rgba(88,88,88,0.5);
}
那么效果类似这样:

在编写可复用的自定义按钮中,通过增加背景图的方式编写了按钮。这种方式一般应用于按钮是很特殊的图形的时候。
如果仅仅是编写可复用的自定义按钮中的按钮,可以看出,有边界、背景有渐进色,那么可以通过声明的方式获得更好的可配置特性。
这是生成的按钮:

这是按下后的按钮:

Android的布局,要比iOS复杂的多。如果想写出和iOS类似的交互体验,付出的代价往往要增加一个数量级。
现在有个正在开发的Android项目,里面已经有了一些不合理的UI实现方式。比如按钮是一张图:
可以看出,应该用编程的方式来实现这个按钮,比如xml声明drawable,一个矩形框,四个边是圆角,要有个很细的边框,黑色的,背景色使用渐进色效果。登录使用文字而不是在图形里。
这样的好处很多:
- 自由的在不同分辨率屏幕下做适配,不必考虑图形的长宽比;
- 当文字改动后,不必喊上美工一起加班处理;
- 文字的国际化。

