ios屬性或者變量的前綴-雜記
static 關鍵字的作用:
(1)函數體內 static 變量的作用範圍為該函數體,不同於 auto 變量,該變量的內存只被分配一次,
因此其值在下次調用時仍維持上次的值;
(2)在模塊內的 static 全局變量可以被模塊內所用函數訪問,但不能被模塊外其它函數訪問;
(3)在模塊內的 static 函數只可被這一模塊內的其它函數調用,這個函數的使用範圍被限制在聲明
它的模塊內;
(4)在類中的 static 成員變量屬於整個類所擁有,對類的所有對象只有一份拷貝;
(5)在類中的 static 成員函數屬於整個類所擁有,這個函數不接收 this 指針,因而只能訪問類的static 成員變量。
線程與進程的區別和聯系?
進程和線程都是由操作系統所體會的程序運行的基本單元,系統利用該基本單元實現系統對應用的並發性。
程和線程的主要差別在於它們是不同的操作系統資源管理方式。 進程有獨立的地址空間,一個進程崩潰後,在保護模式下不會對其它進程產生影響,而線程只是一個進程中的不同執行路徑。線程有自己的堆棧和局部變量,但線程 之間沒有單獨的地址空間,一個線程死掉就等於整個進程死掉,所以多進程的程序要比多線程的程序健壯,但在進程切換時,耗費資源較大,效率要差一些。但對於 一些要求同時進行並且又要共享某些變量的並發操作,只能用線程,不能用進程。
類工廠方法是什麽
類工廠方法的實現是為了向客戶提供方便,它們將分配和初始化合在一個步驟中,返回被創建的對象,並
進行自動釋放處理。這些方法的形式是+ (type)className...(其中 className不包括任何前綴)。
工廠方法可能不僅僅為了方便使用。它們不但可以將分配和初始化合在一起,還可以為初始化過程提供對
象的分配信息。
類工廠方法的另一個目的是使類(比如NSWorkspace)提供單件實例。雖然init...方法可以確認一
個類在每次程序運行過程只存在一個實例,但它需要首先分配一個“生的”實例,然後還必須釋放該實例。
工廠方法則可以避免為可能沒有用的對象盲目分配內存。
readwrite,readonly,assign,retain,copy,nonatomic屬性的作用
@property是一個屬性訪問聲明,擴號內支持以下幾個屬性:
1,getter=getterName,setter=setterName,設置setter與getter的方法名
2,readwrite,readonly,設置可供訪問級別
2,assign,setter方法直接賦值,不進行任何retain操作,為了解決原類型與環循引用問題
3,retain,setter方法對參數進行release舊值再retain新值,所有實現都是這個順序(CC上有相關資料)
4,copy,setter方法進行Copy操作,與retain處理流程一樣,先舊值release,再Copy出新的對象,retainCount為1。這是為了減少對上下文的依賴而引入的機制。
copy是在你不希望a和b共享一塊內存時會使用到。a和b各自有自己的內存。
5,nonatomic,非原子性訪問,不加同步,多線程並發訪問會提高性能。註意,如果不加此屬性,則默認是兩個訪問方法都為原子型事務訪問。鎖被加到所屬對象實例級(我是這麽理解的...)。
atomic和nonatomic用來決定編譯器生成的getter和setter是否為原子操作。在多線程環境下,原子操作是必要的,否則有可能引起錯 誤的結果。加了atomic,setter函數會變成下面這樣:
ios屬性或者變量的前綴-雜記