最近在複習以前沒注意到的東西, 順便也對AutoLayout做了一點功課, 記錄一下如何使用Xib來快速做一些Layout的動作.

(謎之音:這一段可以直接跳過, 不想看就直接往下吧)

對於大多數的iOS開發者應該都有使用過Interface Builder, 可能也習慣使用IB來做開發; 就個人而言, 其實我更習慣用程式碼來做layout的動作, 即使到了iOS5推出了Storyboard也沒有改變我的習慣; 最近在追iOS6的內容(相容要到5.0, you know),看到AutoLayout覺得這真的是一個很棒的功能, 方便、快速, 只是可能太多物件會有點亂(在Xib中), 但是使用Xib來製作就還沒上手的我來說是一個比較容易上手的方式, 順便也嘗試改變一下只用程式來做Layout, 試試看是否會比較快或者是兩個互相搭配有更好的開發方式.

Read on →

最近在研究NSOperation+NSOperationQueue vs GCD的部份; 本篇是關於NSOperation + NSOperationQueue的一些介紹

關於NSOperation, 基本上是用來操作/執行一個單一的任務, 如果你的任務不複雜, 其實可以使用NSInvocationOperation或是NSBlockOperation直接使用;關於NSOperation又可以分成並發(concurrent, 並連)或非並發(non-concurrent, 串連), 這篇會稍微介紹一下在不使用NSOperationQueue如何成為一個concurrent(asynchrouons)的operation.

Read on →

更新了兩項關於在GCD中所呼叫的method應該是background or main thread的資訊, 以及UIView是否能在Background GCD中運行 [at] 2013/07/28

GCD是在iOS4才推出的一個新功能, 雖然已經出現很長一段時間了, 不過小弟我最近才開始使用到它。最近也跟幾位好友有一些討論, 其中兩個問題我覺得可以跟大家分享一下, 順便也記錄一下。

Grand Center Dispatch (GCD)

那個GCD是什麼呢? 又可以用來作些什麼?

首先GCD是由Apple提供的多執行緒(Multiple Thread)解決方案, 主要是 NSOperationQueue、NSThread的替代方案。在使用GCD的時候, 你需要搭配Block來操作。

使用方式就不多做交代了,網路上有很多更加詳細的介紹(我絕對不承認自己也還在摸索的原因)

Read on →

2013/07/31更新了關於iOS6的部份內容.

行事曆功能是在iOS5就提出的, 在iOS6部分會有一些不同, 不過大致內容都是差不多的; iOS7的部份因為我電腦Xcode5-DP只要打code就會crash, 所以等之後再來做一些補充囉.

行事曆功能主要是使用EventKit.framework; 在EventKit中, 除了行事曆(Canlendar)外, 同時也包含提醒事項(Reminders)的功能, 在修改/新增會需要使用到EKEventStore來做操作.

Read on →

在寫程式的時候, 常常會有需要呼叫好幾個method, 然後在時間上有所需別; 最常遇到的都是希望Layout改變完成之後再去執行下一步動作, 如果是一堆layout animation, 就會很常使用到delay去做一些時間差的區別.

can do it this way
1
2
3
4
5
6
7
- (void)currentMehtod {
  SEL action2 = @selector(action2:);
  [object performSelector:action2 withObject:data afterDelay:1.f];
  /** …
  * do somethig after …
  **/
}

一開始使用的時候覺得還好, 但是慢慢的發現如果我的method一開始寫的時候帶入多個參數, 如果用上面的方式, 就要改寫本來的method, 這樣又得花時間, 而且可能最後都是帶入NSDictionary的物件, 在把需要的資料拉出來, 常常會把map的key打錯又多花很多時間在debug.

在StackOverflow上查了參數數量的問題, 沒想到還真的有一個很棒的解法, 就是 NSInvocation.

Read on →