1. 使用NSObject類的方法performSelectorInBackground:withObject:來建立一個線程。java
具體的代碼:多線程
[Object performSelectorInBackground:@selector(doSomething:) withObject:nil];框架
2. 選擇使用NSThread實現多線程函數
NSThread建立主要有兩種方式:spa
1>. 線程
[NSThread detachNewThreadSelector:@selector(doSomething:) toTarget:self withObject:nil];orm
2>.內存
NSThread *myThread = [NSThread alloc]initWithTarget:self selector:@selector(doSomething:) object:nil];開發
[myThread start];get
這兩種方式的區別在於:
前一種調用就會當即建立一個線程並執行selector方法;第二種方式儘管alloc了一個新Thread,但須要手動調用start方法來啓動線程。這點與java建立線程的方法相似。
第一種方式,與上述作法1使用NSObject的類方法performSelectorInBackground:withObject:是同樣的;第二種方式的能夠在start真正建立線程以前對其進行設置,好比設置線程的優先級。
注意:
- (void)doSomething:(id)sender{
NSAutoreleasePool *pool = [NSAutoreleasePool alloc]init];
//執行你的代碼
[pool release];
}
在多線程的執行方法doSomething中須要自行管理內存的釋放.不然可能會警告提示:
XXXXX nsthread autoreleased with no pool in place – just leaking
<2>. iOS開發手勢gesture
myView -->添加myGestureRecognizer[target:myViewController action respondToGesture] --> myViewController [respondToGesture]{}
UIKit框架提供了一些預約義的GestureRecognizer包含下列手勢
UITapGestureRecognizer敲擊手勢(單擊和雙擊)
UIPanGestureRecognizer(拖動手勢)
UIPinchGestureRecognizer(縮放手勢)
UISwopeGestureRecognizer(擦碰手勢)
UITotationGestureRecognizer(旋轉手勢)
- (CGPoint)locationInView:(UIView *)view:函數返回一個CGPoint類型的值,表示觸摸在view這個視圖上的位置,這裏返回的位置是針對view的座標系的。調用時傳入的view參數爲空的話,返回的是觸摸點在整個窗口的位置
<3>