2012年11月22日 星期四

NSError用法

之前我經常都會寫成這樣

 

NSError *fileError = nil;
....
if(fileError != nil)
....

 

後來才發現這樣是錯的!!

 

下面是從apple文件擷取出來的片段

Important: Success or failure is indicated by the return value of the method. Although Cocoa methods that indirectly return error objects in the Cocoa error domain are guaranteed to return such objects if the method indicates failure by directly returning nil or NO, you should always check that the return value is nil or NO before attempting to do anything with the NSError object.

 

大意是說,應該先檢查回傳的結果是否正確,再去用NSError。

所以應該寫成

 

NSString *fileContents;    
NSError *fileError;

fileContents = [NSString stringWithContentsOfFile:fileOnDisk
encoding:NSMacOSRomanStringEncoding
error:&fileError];

if(fileContents == nil) {
NSLog(@"Error : %@", [fileError localizedDescription]);
// ... i.e. handle the error here more
return ...; // often returning after handling the errors, sometimes you might continue
}

但是為什麼要先檢查結果呢?

看了這篇http://stackoverflow.com/questions/2069039/error-handling-with-nsurlconnection-sendsynchronousrequest之後

他舉例下載檔案有時候會在下載途中遭遇錯誤,並且被framework解決掉。雖然結果有正確回傳回來,但是NSError物件還是被設定了。

 

參考連結:http://stackoverflow.com/questions/1808929/handling-nserror-when-reading-from-file/1810301#1810301

2012年11月18日 星期日

Mango, House

最近突然愛上聽電子音樂,找了幾首Tiesto跟Armin Van Burren的歌來聽。

這兩位是屬於Trance風格的舞曲,聽起來的感覺是旋律性比較強,有的會有女性人聲搭配。

 

後來在Youtube上的推薦名單上亂點,無意間聽到了一個俄羅斯的DJ-Mango的作品

youtube播放清單

在假日慵懶的下午來杯咖啡,聽聽這多麼令人舒服的混音作品。

人生,活在當下。

2012年5月13日 星期日

xcode游標移到文字最前面

在使用xcode開發時有一點很不爽的就是按⌘+會跳到整行的最前面(通常是空白),還要另外按鍵跳到真正的文字開頭實在有夠麻煩!

還好有好心阿多仔幫我們寫xcode plugin解決這惱人小問題,參考
https://github.com/insanehunter/XCode4_beginning_of_line

把project clone下來然後用xcode開啟->編譯,就ok了。

現在再按一次⌘+試試看吧。

2012年2月16日 星期四

手搖飲料店生意觀察

今天中午吃飽飯後突然覺得應該出去走走,不然肚子可能會越來越大。

走著走著來到了公司附近的大街上,我一時興起決定觀察幾家飲料店的生意狀況。

 

老K紅茶:清一色是稍微會打扮的女生,攤子前排了約7、8人左右。

水巷茶弄:一般女生,我還聽到有人說這裡沒椰果她不買,排約5人

清心:我經過時幾乎沒人,上班族都不喝清心嗎?

50嵐:人最多,大概有10幾人在排隊,男女都有。

橘子工坊:排的人跟水巷茶弄差不多。

 

結論:

  1. 品牌威力驚人,但是特色也很重要。
  2. 要能賣客群想要的產品。
  3. 消費者口味越來越重,喜歡加一些有的沒的配料。

2012年2月8日 星期三

近日新學到的觀念:判斷delegate是否respondsToSelector

在實作delagate的時候為了判斷delagate是否實作該method需用respondsToSelector去偵測。
if (self.delegate && [self.delegate respondsToSelector:@selector(refreshState)]) {
    [self.delegate refreshState];
}
但總是出現warning: method '-respondsToSelector:' not found (return type defaults to 'id')
後來看了這篇找到解法。
原來在protocol裡面要conform NSObject!
如果自己在delegate實作裡去用[self respondsToSelector:sel]會錯XD