有時error往往會在最關鍵的時候冒出來
(譬如說:我想過Christmas,我想去跨年...但是有些bug還沒解)
尤其是一些系統上的問題或是鬼打牆的小細節
首先登場的是
"No provisioned iPhone OS device is connected"
明明就接好好的device,你跟我說沒有provision
要解決這奇怪的現象,
可以試試在Organizer把provisioning裡的files通通delete讓他重裝
接著登場的是
"The program being debugged is not being run"
很無厘頭的error,但是解法跟上面的症狀是一樣的
進入Organizer把provisioning profiles清一清
還不行的話,從apple developer重新下載吧
最後登場的是
"CFPropertyListCreateFromXMLData():
Old-style plist parser: missing semicolon in dictionary."
話說在我要提供多國語言需求下,建立了lproj的strings file
奇怪的是出了這個error還跟我說 Unexpected character at line 1
第一行很ok阿,哪有什麼問題!也有semicolon阿
然而在我浪費了約1個小時的青春尋找問題
最後....在文件的很後面 很後面 的某一行.....真的少了一個semicolon...@#$%
所以at line 1是騙人的,semicolon是一定有漏掉的地方
睜大眼睛快找找吧~
Happy New Year & Happy Debugging lol
2010年12月31日 星期五
2010年12月22日 星期三
iPhone 我後悔了~ performSelector 停下來阿
雖然短的跟一行文沒什麼兩樣
但是之前沒記下來,那就開個版面寫一下
Tips:
故事是這樣發生的...
下面的動作是在touch event觸發之後會去執行的
但是,在這個延遲的期間又去觸發touch event...
已經下達的performSelector是不會理會的
使用者可能會有UI行為不一致的感覺
因此,在下達performSelector若能把前一次 未執行完的動作給停掉
會是比較理想的作法,cancel 方法如下:
但是之前沒記下來,那就開個版面寫一下
Tips:
故事是這樣發生的...
下面的動作是在touch event觸發之後會去執行的
[self performSelector:@selector(myFunc) withObject:nil afterDelay:delay];
但是,在這個延遲的期間又去觸發touch event...
已經下達的performSelector是不會理會的
使用者可能會有UI行為不一致的感覺
因此,在下達performSelector若能把前一次 未執行完的動作給停掉
會是比較理想的作法,cancel 方法如下:
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(hideMsg) object:nil];
參考來源: stackoverflow
2010年12月13日 星期一
iPhone 更改專案名稱 (update:完整版)
剛起始一個專案的時候
我有個很糟糕的習慣就是取了爛名字
什麼xxxtest阿,xxxdemo等等...
等真的要release的時候不免被人家念一頓
其實要修改 project name也不難
1. 找到專案的info.plist
2. 找到"Bundle display name"的欄位
3. 將原本 ${PRODUCT_NAME} 改成想要的名稱
如果遇到
the program being debugged is not being run
的error message也不要慌,
shift + command + K 把專案給clean重編就好了
參考資料:stackoverflow
iphonedevsdk
update: 2011/05/10
嗯~原本的作法算是治標不治本
如果精明一點可以發現透過organizer看到的device log都還是舊名稱
雖然之前就有看到網路上有教學
不過好害怕整個project改爛了就很好笑了
anyway,凡是總有第一次,先備份起來總不會失控吧!
更改專案名稱真的沒有這麼恐怖,給我5分鐘就可以搞定的:)
Let's change the project name completely
1. Copy all files under old project directory to a new one.
拷貝所有舊專案資料夾底下的file到新的資料夾
2. Rename "old_name.xcodeproj" to "new_name.xcodeproj" then open it.
將舊的xcodeproj檔名改成想要的新名稱,然後用xcode打開
3. Check if project with the new name under Group&Files pane and Target pane
修改並確定project name及Targets的名稱是新的
4. Clean the project by shift+command+K and quit xcode that's it,
don't rename any other file name at this state.
清除專案,別急著將其他檔案更名,拜託,我在這步失敗過:P
5. Right click on the "new_name.xcodeproj" and choose "show package content",
open "project.pbxproj" by xcode.
回到資料夾在xcodeproj檔案上面按右鍵 選顯示套件內容 打開project.pbxproj
6. Replace all "old_name" with "new_name" save and quit
用new_name取代所有的old_name, 儲存後離開
7. Open the project again, and rename "old_name" to "new_name" in entire project,
the red lost referenced files should disappear.
再次開啟xcode將 project中出現的所有"old_name"用"new_name"取代
8. Open "new_nameViewController.xib" and "MainWindow.xib" to correct the class
identity.
開啟"new_nameViewController.xib"與"MainWindow.xib"更改delegate, controller的
class identity欄位
9. 重新編譯,完成!!
我的作法並無使用console,希望對大家有幫助
參考資料:WebObject blog
我有個很糟糕的習慣就是取了爛名字
什麼xxxtest阿,xxxdemo等等...
等真的要release的時候不免被人家念一頓
其實要修改 project name也不難
1. 找到專案的info.plist
2. 找到"Bundle display name"的欄位
3. 將原本 ${PRODUCT_NAME} 改成想要的名稱
如果遇到
the program being debugged is not being run
的error message也不要慌,
shift + command + K 把專案給clean重編就好了
參考資料:stackoverflow
iphonedevsdk
update: 2011/05/10
嗯~原本的作法算是治標不治本
如果精明一點可以發現透過organizer看到的device log都還是舊名稱
雖然之前就有看到網路上有教學
不過好害怕整個project改爛了就很好笑了
anyway,凡是總有第一次,先備份起來總不會失控吧!
更改專案名稱真的沒有這麼恐怖,給我5分鐘就可以搞定的:)
Let's change the project name completely
1. Copy all files under old project directory to a new one.
拷貝所有舊專案資料夾底下的file到新的資料夾
2. Rename "old_name.xcodeproj" to "new_name.xcodeproj" then open it.
將舊的xcodeproj檔名改成想要的新名稱,然後用xcode打開
3. Check if project with the new name under Group&Files pane and Target pane
修改並確定project name及Targets的名稱是新的
4. Clean the project by shift+command+K and quit xcode that's it,
don't rename any other file name at this state.
清除專案,別急著將其他檔案更名,拜託,我在這步失敗過:P
5. Right click on the "new_name.xcodeproj" and choose "show package content",
open "project.pbxproj" by xcode.
回到資料夾在xcodeproj檔案上面按右鍵 選顯示套件內容 打開project.pbxproj
6. Replace all "old_name" with "new_name" save and quit
用new_name取代所有的old_name, 儲存後離開
7. Open the project again, and rename "old_name" to "new_name" in entire project,
the red lost referenced files should disappear.
再次開啟xcode將 project中出現的所有"old_name"用"new_name"取代
8. Open "new_nameViewController.xib" and "MainWindow.xib" to correct the class
identity.
開啟"new_nameViewController.xib"與"MainWindow.xib"更改delegate, controller的
class identity欄位
9. 重新編譯,完成!!
我的作法並無使用console,希望對大家有幫助
參考資料:WebObject blog
iPhone POST url遇上跳脫字元的處理方式
寫過網路程式的人都知道
POST url之前最好要將內容encode過
不然decode過程中一定會有判讀錯誤的問題
ex: user=123&abc&pass=qwe=asd
encode後送出 user=123%26abc&pass=qwe%3Dasd
原本以為下面的encoding method用得好好的
沒想到是一個大bug
所以請大家改用
參考來源: simonwoodside
iphonedevsdk
POST url之前最好要將內容encode過
不然decode過程中一定會有判讀錯誤的問題
ex: user=123&abc&pass=qwe=asd
encode後送出 user=123%26abc&pass=qwe%3Dasd
原本以為下面的encoding method用得好好的
沒想到是一個大bug
[unencodedObj stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
所以請大家改用
(NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,
(CFStringRef)unencodedObj,
NULL,
CFStringRef)@"!*'();:@&=+$,/?%#[]",
kCFStringEncodingUTF8 );
參考來源: simonwoodside
iphonedevsdk
訂閱:
文章 (Atom)