1、簡介: property是Objective-C的關鍵詞,與@synthesize配對使用,用來讓編譯好器自動產生與資料成員同名的方法聲明。@synthesize則是用來產生對應聲明方法的實現。1.1 property的文法格式:@property (參數1,參數2)類型名字;這裡的參數,主要有以下三種:setter/getter方法(assign/retain/copy)讀寫屬性(readwrite/readonly)atomicity(nonatomic)1.2
單例模式在iOS開發過程中經常用到,蘋果提供過objective c單例的比較官方的寫法:static MyGizmoClass *sharedGizmoManager = nil; + (MyGizmoClass*)sharedManager{ @synchronized(self) { if (sharedGizmoManager == nil) { [[self alloc] init]; // assignment not done here
很多想開發IOS,或者正在開發IOS的程式員以前都做過Java或者C++,當第一次看到Objective-C的代碼時都會頭疼,Objective-C的代碼在文法上和Java,
本篇部落客要介紹基礎資料型別 (Elementary Data Type)的長度,基礎資料型別 (Elementary Data Type)在Oc的數組中如何使用,還有其他資料類型的相互轉換等。為了示範基礎資料型別 (Elementary Data Type)的例子,我們建立一個iPhone項目類做例子1、建立項目為了方便,我們建立一個Single View Application 。輸入項目名稱 BaseTypeProduct Name: 指產品名稱 ,類似於項目名稱。Company
文章目錄 4.1、NSNumber 類型4.2、NSArray類型 今年WWDC 2012蘋果全球開發人員大會上,蘋果針對LLVM編譯器都做了重大改進,新版的Xcode 4.4中的LLVM編譯器升級到了4.0,給Objective-C帶來了很多令人驚喜的特性。注意,下面的文法需要下載Xcode 4.4。1、枚舉類型的改變老寫法:typedef enum Week{ Moday, Tuesday, Wednesday,
代碼塊本質上是和其他變數類似。不同的是,代碼Block Storage的資料是一個函數體。使用代碼塊是,你可以像調用其他標準函數一樣,傳入參數數,並得到傳回值。脫字元(^)是塊的文法標記。按照我們熟悉的參數文法規約所定義的傳回值以及塊的主體(也就是可以執行的代碼)。是如何把塊變數賦值給一個變數的文法講解:按照調用函數的方式調用塊物件變數就可以了:int result = myBlock(4); // result是 281、參數是NSString*的代碼塊 void
Objective-C的異常比較像Java的異常處理,也有@finally的處理,不管異常是否捕獲都都要執行。異常處理捕獲的文法 @try { <#statements#> } @catch (NSException *exception) { <#handler#> } @finally { <#statements#> }@catch{} 塊
Objective-C裡核心的處理字串的類就是NSString和NSMutableString這兩個類,這兩個類完成了Objective-C中字串大部分功能的處理。這兩個類的最主要的區別是NSString建立賦值後不能動態修改長度和內容,除非給重新賦值。而NSMutableString類似與鏈表的,在建立賦值後可以進行修改長度,插入,刪除等操作。註:以下代碼運行環境是:XCode 4.3.2 ,IOS 5.1。NSString提供了許多建立和初始化新字串的方法。下面這個是建立常量字串的。
1、Objective-C記憶體管理簡介: Objective-C需要自己考慮記憶體的管理,對於從Java, C#等語言轉向Objective-C平台的程式員新手來說,這是個很大的挑戰。幸運的是,如果熟悉了Objective-C的記憶體管理機制,手工管理記憶體也沒有那麼可怕。 Objective-C的記憶體管理介於C/C++和Java C#直接,不像C/C++語言記憶體管理全部需要程式員一手包辦,也不像Java C#語言有那麼完備的記憶體記憶體回收行程。(Objective-C
簡介:上篇我們講到了KVC,這篇我們學習KVO,全名為:Key Value
委託(delegate)是一種對象,另一個類的對象會要求委派物件執行它的某些操作。建立一個“NSObject”類別稱為建立一個非正式協議。任何實現“NSObject”類別中的方法的類的對象都可以成為委派物件。因為在Objective-C中所有的類都是NSObject的子類。當你想要向委派物件發送訊息時,最好先檢查該對象是否理解你將要發送的訊息。if ([delegate respondsToSelector: @selector(...)]{ [delegate ...];}正式協議:通過在@
簡介:上篇我們講到了KVC,這篇我們學習KVO,全名為:Key Value
不進行講解,直接上代碼。1 #import <Foundation/Foundation.h>2 3 @interface Demo01 : NSObject4 5 6 -(void) run;7 -(void) start;8 9 @end 1 #import "Demo01.h" 2 3 @implementation Demo01 4 5 -(void) run 6 { 7 static int counter = 0; 8 9 while(![[
編譯處理指示 既然Objective-C是物件導向的程式語言,所以理應支援可重用的資料和函數的封裝體,即類。 類是在結構體的基礎上發展的產物,結構體只能處理資料,在結構體之上增加對該資料處理的函數,就構成類的概念。類使程式總能提供對資料專門處理函數的安全調用,使得一系列的機能作為一個子系統供安全且重複的使用。
好長時間沒有整objective-c了,都差不多忘光了.也沒有系統的學習與編碼,之前只是看書而已,現在有了機器卻一直沒有學,需要重新拿起來...http://www.cnblogs.com/liuzenglong/archive/2012/08/02/2619274.html http://www.cnblogs.com/liuzenglong/archive/2012/08/09/2629600.html 之前的兩篇博文... 準備在元旦之前利用業餘時間搞完<Objective-C程式設計語言
說明: 我所說的都是Objective-c與java不同點,相同的地方不說,只為java開發人員快速掌握與瞭解Objective-c. Objective-c與Java不同的地方: 1. 注意使用後的記憶體釋放。[avariable realase] 釋放記憶體2.標量注意:unsigned ,int ,BOOL, NSInteger,NSUInteger,字串 用 @“”來指定。3.const 類似於java中的final 4.結構體: struct5.typedef
應當使用:@property (nonatomic, copy)今天在這個問題上犯錯誤了,找了好久才知道原因。另外,簡單的進行反組譯碼看了下,Block 被儲存在靜態變數區,運行時構造出一個運行棧,進行調用。retain 並不會改變 Block 的引用計數,因此對 Block 應用 retain 相當於 assign。但是既然在靜態儲存區,為什麼會出現 EXC_BAD_ACCESS 呢?代碼都在的呀。網上都說 Block 在棧上,這應該是錯誤的:指向 Block
我們知道在 Objective-C 中給 nil 發送訊息程式不會崩潰,Objective-C 是以 C 語言為基礎的,PC 上,在 C 語言中對null 指標進行操作,程式會由于越界訪問而出現保護錯進而崩潰,但是 Objective-C 中為什麼不會崩潰呢?原因需要從原始碼中尋找,下面是 objc_msgSend 的 arm 版彙編程式碼片段:在 arm 的函數調用過程中,一般用 r0-r4 傳遞參數,用 r0 傳遞傳回值。對應 objc_msgSend,第一個參數為 self,傳回值也是
Objective-C 的“多繼承” 當單繼承不夠用,很難為問題域建模時,我們通常都會直接想到多繼承。多繼承是從多餘一個直接基類衍生類別的能力,可以更加直接地為應用程式建模。但是Objective-C不支援多繼承,由於訊息機制名字尋找發生在運行時而非編譯時間,很難解決多個基類可能導致的二義性問題。不過其實 Objective-C 也無需支援多繼承,我們可以找到如下幾種間接實現多繼承目的的方法:訊息轉寄 delegate和protocol 類別