从Windows到Mac的快速使用入门
本文针对有Windows使用经验,需要快速了解Mac使用的开发人员。
Finder和资源管理器
看到一个崭新的Mac环境,对于有windows使用经验的人来说,可能第一个问题是资源管理器在哪里。
和windows资源管理器对应的Mac工具,叫Finder。
如果使用的是Mac OSX 10.7 Lion的话,应该就在这里:
可以点击左侧的菜单项,到相应的目录下,比如桌面,它的概念和windows的桌面是一样的: Read more »
本文针对有Windows使用经验,需要快速了解Mac使用的开发人员。
Finder和资源管理器
看到一个崭新的Mac环境,对于有windows使用经验的人来说,可能第一个问题是资源管理器在哪里。
和windows资源管理器对应的Mac工具,叫Finder。
如果使用的是Mac OSX 10.7 Lion的话,应该就在这里:
可以点击左侧的菜单项,到相应的目录下,比如桌面,它的概念和windows的桌面是一样的: Read more »
从git服务器获取和同步只读的项目数据。比如说,通过github,获取人家的项目数据,而且还要和它保持同步,需要以下操作。
使用命令行
这是最简单的方式了。只需安装git。拿我现在写的一个发布在github上的项目举例,见:https://github.com/MarshalW/WebBook/tree/gh-pages
可以通过如下命名clone项目(相当于svn的checkout)数据:
git clone git://github.com/MarshalW/WebBook.git
git支持的几种协议,在github中都有支持,其中git一般只用来读取,http可以读写(但在这里如果你不是该项目的成员,只能读取),以及ssh方式(可读写)。
如果需要更新本地数据,可执行:
git pull
如果想切换服务器端的分支,比如上面的项目,在服务器端有master和gh-pages两个分支,默认clone下来的是master,如想切换到gh-pages,可执行:
git checkout –track origin/gh-pages
使用EGit
如果你习惯了Java开发环境,或许需要使用到Eclipse下的egit插件。
示例如下图:

可直接访问:http://easymorse.googlecode.com/svn/tags/WebBook-0.2/test.html,需要注意只能跑在有webkit浏览器的触摸设备上。
为什么会抖动
在iPad上,如果用传统的改变html元素的左上顶点坐标(left、top),会有可被用户察觉的抖动现象。
这是因为,浏览器不确定是否要使用GPU硬件加速,也许这个操作只是移动一个元素到某个位置。
这种指定顶点的做法,在鼠标操作设备上不会出现抖动现象,是因为鼠标的轨迹是连续的。而触摸设备的手指移动是离散的。
另外,浏览器是假定可用可不用硬件加速的地方,就不用硬件加速,这是因为,对于移动设备来说,硬件加速更消耗电池。
使用CSS3的translate,浏览器将使用硬件加速,手指移动的坐标离散量,会自动形成动画,这样看起来就不会抖动了。
另外,translate的另一个好处是和css布局无关,坐标是针对元素自己的,也就是从(0,0)开始。 Read more »
iOS5支持开发自定义的容器控制器。比如下面这样:


在本示例中,屏幕的上半部分是嵌套在根控制器中的导航控制器(UINavigationController)。即:
Mac下的应用,如果想切换程序窗口,有很多办法,而且比windows应该多和方便。
这里总结一下,如果只是应用的窗口切换,可以快捷键:command+tab
如果是相同应用的多个窗口,比如safari,你开了两个窗口,可以通过菜单来切换:

使用NSCondition,类似Java中的wait,notify机制,可以实现多线程的同步,即,可实现生产者消费者问题。
基本思路是,首先要创建公用的NSCondition实例。然后:
示例代码如下:
runloop可以阻塞线程,等待其他线程执行后再执行。
比如:
@implementation ViewController{
BOOL end;
}
…
– (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@”start new thread …”);
[NSThread detachNewThreadSelector:@selector(runOnNewThread) toTarget:self withObject:nil];
while (!end) {
NSLog(@”runloop…”);
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
NSLog(@”runloop end.”);
}
NSLog(@”ok.”);
}
-(void)runOnNewThread{
NSLog(@”run for new thread …”);
sleep(1);
end=YES;
NSLog(@”end.”);
}
但是这样做,运行时会发现,while循环后执行的语句会在很长时间后才被执行。
使用ARC编写全新的项目是很容易的。下面用一个简单的项目来说明使用方法。
先看写好后的样子:

代码很简单。有两个视图,左边视图提交切换到右边视图,右边视图点返回回到左边视图。
首先是创建项目,使用创建项目向导,这里创建一个单视图应用(Single View Application)。
