|
文章列表
最近的工作中比較頻繁的用到了Block,不在是以前當做函數(shù)指針的替代或者某些API只有Blocks形式的接口才不得已用之了,發(fā)現(xiàn)自己對其了解還是太淺,特別是變量的生存期,按慣例還是翻譯官方文檔,原文鏈接。
介 ...
UIInterfaceOrientation和UIDeviceOrientation長得是又長又像,長久時間我根本沒有區(qū)分這兩個類型,肯定也混用了無數(shù),直到我現(xiàn)在處理的一個問題,明明是橫/豎屏的情況,控件卻是以豎/橫的布局展示,而且我在模擬器上怎么都搞不出來,而測試稍微把機器轉轉圈就能重現(xiàn)這個現(xiàn)象。
那么定位的方向很明確,肯定是在willRotateToInterfaceOrientation之類的函數(shù)里咯。于是我看到了這樣的代碼
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOr ...
項目需要在程序里即時設定語言,而非iPhone默認的設置。因為現(xiàn)在的項目已經比較繁雜,而且有時候是視圖直接加載,有時候是使用導航欄,有時候又是addSubView等等不足一一道,而且每種視圖還可能有不同的入口,總之管理起來 ...
一直很想把設計模式做起來,但是一方面,項目籌劃的時候空想很多模式,但是卻不下手去做,項目實際開始了又狂趕代碼,沒空去注意,這導致我對模式的理解和運用一直不深。中途我也無數(shù)次拿起<設計模式>看,但是都很難堅持,后來想通了,模式用得到就用上,用不到不必勉強,我記住這些模式的適用范圍,然后在實際開發(fā)的時候,如果發(fā)現(xiàn)似乎應該用到某個模式,那么就拿過來參考,同時對已經用上手的模式不斷加深印象和熟悉實質,能用上才是必須學的。
看過著名的用ruby踩四人幫的帖子,特別是對其很多模式其實是語言特性貧乏的癥狀很贊同,但總結經驗,提取共識并加以類比,我相信還是有益處的。
做windows客戶端 ...
plist文件廣泛使用在Mac系統(tǒng)上,iPhone程序也在很多地方直接操作該文件。該文件類型實際上就是個XML,而且格式相當簡單一致,這里給文件結構給出講解,也順便復習一下快忘光的java。
首先plist是xml,版本1.0,字符集始終采用utf-8,然后DOCTYPE是plist,publicID和systemID也是固定的值,然后就是標準的plist節(jié)點,這個節(jié)點將視為根節(jié)點,對應在plist視圖中的Root,注意根節(jié)點有一個屬性是version,一般是1.0。
每個節(jié)點,包括根節(jié)點都有其類型,分容器型和值型,容器型有DICTIONARY和ARRAY,DICTIONARY就 ...
規(guī)范上NSString做屬性都是寫成copy的,理論上應該是復制了字符串而不是單純的增加引用計數(shù),其實問題只會出現(xiàn)在把NSMutableString賦值給NSString的時候。
@interface Demo : NSObject
{
NSString *retainString;
NSString *copyString;
}
@property (nonatomic, retain)NSString *retainString;
@property (nonatomic, copy)NSString *copyString;
@end
@im ...
Objective-C搞了很久了,結果現(xiàn)在還是對起內存管理與對象初始化一知半解,還好都是些移動開發(fā)沒出太大問題,不過現(xiàn)在的一個模塊化應用上對語言的使用要求更加嚴格了,還是從官方文檔搞起吧,原文是Allocating and Initializing Objects
(鏈接經常變,不保證可用),出自Introduction to The Objective-C Programming Language
,也是Memory Management Programming Guide
的理解前提。
對象分配空間與初始化
對象分配空間與初始化
使用Obje ...
可能是之前Windows開發(fā)慣了,做下載模塊的回調的時候都是直接對回調函數(shù)進行調用的,不過這在現(xiàn)代語言構建的應用上,如果子線程觸發(fā)了UI操作,有可能會core掉,在iPhone里特別是對UIWebView。所以不得不在所有回調方法里用performSelectorOnMainThread。但這個方法實在太爛了,首先主體要是NSObject,參數(shù)還只能有一個Object的NSObject,不能多參,而回調的時候完全可能回返id和錯誤碼等等信息,所以就得寫成數(shù)組,然后再分解,同時還要加上類型,根據(jù)類型分解數(shù)組并調用不同的回調。
實在太傻了所以我想找別的替代方法,搜了一下void dispat ...
總覽
在Xcode的iPhone SDK
3.0之后,已經內置了單元測試的功能,開發(fā)者可以借助單元測試寫出更健壯更正確的代碼。本文使用的SDK版本是3.2.3。
Xcode提供了兩種單元測試方式,分別是邏輯測試與應用測試,邏輯測試用于檢驗? ...
概念介紹
這里的閉包自然是計算機語言中的閉包,詞法閉包(Lexical
Closure)的簡稱,主要表現(xiàn)在函數(shù)可以引用到自由變量,并且可以脫離變量的創(chuàng)建環(huán)境,再復雜的定義也不需要多說明了,可以理解為面向對象里面的成員
函數(shù)可以調用其成員變量,然其概念卻比面向對象的概念流行早的多,約六十年代在Scheme里就實現(xiàn)了。函數(shù)式編程語言里這是極為常見的概念,而非函數(shù)式
的語言中js里也有很多閉包出現(xiàn)的身影。
Objective-c的閉包
準確地說在Objective-c里不叫閉包(Closure)而叫Block,但概念還是大同小異的。Mac平 ...
當前需求
在做登錄模塊時,需要做登錄的歷史記錄,存儲本機所有登錄的用戶的用戶名密碼,以及登錄策略如是否記住密碼,是否自動登錄等。具體實現(xiàn)之前,我認為
這個需求看樣子并不需要SQLite,因為登錄用戶不可能太多,而且存儲的字段也就四個而已,估計用NSUserDefaults存一下數(shù)組就結了。
初遇困難
令我沮喪的是,這么一個明確的需求竟然一時半會都沒有完成,用戶登陸信息明明很簡單的
@interface LoginUserInfo : NSObject
{
NSString *username_;
NSString *passwor ...
一般在iPhone開發(fā)中,除了在使用c函數(shù)時不得不使用char*作為字符串參數(shù),我們都會選擇NSString類型的字符串作為首選。
NSString比起char*當然好的不是一星半點,安全,易用性甚至包括字符編碼都是很不錯,但相對Java中的String有 ...
加速計是iPhone非常吸引人的特性之一,借由本特性產生了很多極具創(chuàng)意的游戲和便于用于的操作,令人驚嘆的使用加速計無疑對開發(fā)iPhone程序是加分的亮點。
iPhone內置的加速計是三維全方向感知的,手機平面左右兩側對? ...
目前又有了一個想在iPhone上做協(xié)助調試的設想,當然控制權什么的是別說了,就是做一些協(xié)助方在自己屏幕上點點劃劃,被協(xié)助方也要有同樣的操作,因為被調試程序的不確定性,那只能做成發(fā)送各種針對屏幕的模擬事件了。
因為apple沒有放出直接發(fā)送觸屏事件等的API,所以用的都是越獄的iPhone加上PrivateFramework,根本沒指望上市,反正就是為了內部調試。
首先在kennytm的網站拔下私有framework的頭文件,就本應用而言,只需要GrapicsServices文件夾以及Availability2.h即可。然后導入Xcode目錄下Platforms下對應的GraphicsServic ...
最近的項目里經常用,所以順手翻譯一下,也增強了解,同樣無版權不保證內容正確性,原文地址
do shell script in AppleScript
這篇技術要點回答了AppleScript中的do shell script命令中經常被問及的問題,該命令自AppleScript1.8后引入
文本講 ...
用*nix肯定沒有不用grep的,據(jù)說這玩意還是HR的最愛,簡單的用可以輕松刷選簡歷之類的,只要看里面有沒有相應技能關鍵字就成了。
其實它還是挺強的,甚至于可以做逆向環(huán)視,不過我還不清楚它如何輸出捕獲型括號里面的內容
set fastComp to do shell script "defaults read com.apple.Xcode PBXCustomTemplateMacroDefissnitions|grep -Po \"(?<=ORGANIZATIONNAME = \\\")([^\\\"]*)\"" ...
MacOSX確實是個相當好用的系統(tǒng),無論是對普通用戶還是開發(fā)者,比如很方便的defaults,一行shell就可以任意存取一些鍵值信息,而且可加域名控制和字典形式的鍵值,無需關心令人煩惱的持久化。
一開始的用途是在Xcode新建文件時修改公司名,用法也很簡單
defaults write com.apple.Xcode PBXCustomTemplateMacroDefinitions -dict ORGANIZATIONNAME "Your Company Name"
重啟過Xcode就會發(fā)現(xiàn)原本的那些__MyCompanyName__全部被替換 ...
蘋果的文檔比起MSDN或者JDK的注釋那是太垃圾了,我就幾乎沒有遇到過沒有錯誤的情況,這還是在我根本不深入的情況下,沒有代碼sample相比都根本不算問題。
比如我sed想做文件原地的替換,但是怎么寫都出錯,錯誤提示還莫名其妙,后來多方搜索才知道Mac上的sed如果參數(shù)有-i就必須加上備份指令,即-i后添加任意字符,那些字符就作為備份文件的后綴名,
可恥的man上卻寫得好像是可選的一樣。
煩人的是即使sed沒有做替換它還是會備份文件,相當?shù)睦速M。
這幾天利用shell處理問題真是相當開眼界了,不愧是Unix系統(tǒng)的精髓,就像現(xiàn)在有一個需求,要把不同文件里的文件占位符替換成該文件的 ...
文中資料來源主要是《AppleScript跟我學》的中文譯本以及Apple的的Technical Note
AppleScript是用在MacOSX上的腳本語言,和操作系統(tǒng)結合的相當緊密,不過一般來說我也沒興趣學一門應用不太廣泛的專屬語言,但一來是項目需要,而且這個語言確實好用并且簡單易學,就當消遣消遣好了。寫好的腳本可以用NSTask很方便的執(zhí)行,而腳本本身幾乎什么都能做。
編輯器可以選擇自帶的Apple Script Editor就在應用程序的實用工具下面,應付是絕對夠了,需要代碼提示的話請把偏好設置中的“使用腳本助理”勾選,而代碼提示的輸入是用Esc鍵,當然你也可以選擇Xc ...
必須要說這玩意還是挺強的,直接實現(xiàn)了iPhone平臺上的自動化測試,而且是模擬器真機通吃,調起來也不算多難,iOS 4之后原生支持。
下面是牢騷:首先這自動化測試的腳本還得用js編寫,這需要測試人員掌握一定的編碼能力?? ...
記錄一下平時開發(fā)工作中的一些經驗和問題解決的積累,仍然是沒什么體系可言。有些是轉自項目組的集體智慧。
使用Mac操作系統(tǒng)不太習慣,它很多組合建都是用到Command,但項目組沒錢買Mac真機,都是?? ...
原文Google Objective-C Style Guide
iPhone項目新成立,也沒有編碼規(guī)范的積累,項目組本來是想拿老的C編碼規(guī)范套用的,但評審一下就發(fā)現(xiàn)問題多多,之后找到了Google的Objective-C的編碼規(guī)范,大家就先翻譯一下咯
聲明這是無版權翻譯,也不對任何錯誤負責,不保證文章的完整性,我到現(xiàn)在也認不全語法。
(大半年的事后,決定對這份文檔做重審,當然不是對修辭手法,而是處理內部的硬傷)總覽
背景知識
Objective-C是一個C語言的擴展語言,非常動態(tài),非 ...
因為項目組正在做IPhone的項目,公司內部既無積累更無經驗,就想起一個先行示范的表率,以前就一直想搭建的Wiki服務器正好就一鼓作氣拿下了。
公司的Windows操作系統(tǒng)閑置機器很多,本來是想在Windows上搭建的,但匆匆找了半天,要么要裝虛擬機,要么不穩(wěn)定,加上我也很想多習慣MAC系統(tǒng),所以還是選擇了在MAC上搭建,選擇的Wiki版本是MediaWiki,也是大名鼎鼎的維基百科使用的版本。提一下本機操作系統(tǒng)版本是10.6.3,非蘋果正品而是破解安裝在清華同方的某款機器上。
搜索一下就找到了MediaWiki的官網,不出意外的是整個官網都是由自 ...
|
|
|