標籤: 知識點 1.初步認識 OC 2.xcode使用 3.物件導向編程思想,類和對象 4.類的定義和使用 5.類的執行個體化--對象 6.聲明和實現相分離 ===========================================1、需要理解的(理論部分)
標籤:記憶體管理的規則:1.alloc建立的必須釋放,便利構造器建立的不要釋放2.加入容器中的對象會被執行一次retain操作,引用計數加13.容器移除對象,會向對象發送一次release訊息,讓對象的引用計數減14.當容器釋放的時候,會向容器中的所有對象發送一次release訊息當進行記憶體管理時,只要遵循每次增加都對應一次釋放就不會出錯。下面是一個例子:定義一個Hero類,添加如下幾個屬性和初始化方法:1 @property (nonatomic, copy) NSString *name;
標籤:nil用來給對象賦值(Object-C的任何對象都屬於id類型),NULL則給任何指標賦值,NULL和nil不能互換,nil用於類指標賦值(在Object-C中類是一個對象,是類的meta-class的執行個體),而NSNull則用於集合操作,雖然它們表示的都是空值,但是使用場合完全不同,所以在編碼時嚴格按照變數類型來賦值,將正確的空值賦給正確的類型,使代碼易於閱讀和維護,也不易引起錯誤。 1.oc最好 用nil [ nil
標籤:管理範圍:任何繼承NSObject的對象,基礎資料型別 (Elementary Data Type)不用進行管理本質原因:因為對象和基礎資料型別 (Elementary Data Type)在系統中的儲存空間不一樣,局部變數主要存放在棧中,而Object Storage
標籤:不可變字串操作:1.initWithFormat:。初始化操作,其中直接賦值的效果與該方法一樣,例如:1 NSString *string1 = [[NSString alloc] initWithFormat:@"iOS"];2 NSString *string2 = @"iOS";但需要注意的是,第二種方法聲明的是常量字串,位於記憶體裡的常量區。2.length。擷取字串長度,length的定義是1 @property (readonly) NSUInteger
標籤:無論我們使用什麼語言,總是會出現需要判斷兩個對象是否相等的情況,OC當然也不例外。首先看一段代碼: NSString *str1 = [[NSString alloc] initWithCString:"equal" encoding:NSUTF8StringEncoding]; NSString *str2 = @"equal"; if(str1 == str2) { NSLog(@"equal");
標籤: iOS的整體架構(以iOS8為例)圖如下: 從Cocoa Touch到Core
標籤:弱引用實在是太弱了,連通過該引用來申請空間都無法保持聯絡。舉個例子@interface classA:NSObject@porperty (nonatomic,weak) classA * tempClass1;@property (nonatomic,strong) classA * tempClass2;-(void)test;@end @implement classA-(void)test{ self.tempClass1 = [classA
標籤:郝萌主傾心貢獻,尊重作者的勞動成果,請勿轉載。假設文章對您有所協助,歡迎給作者捐贈,支援郝萌主,捐贈數額任意。重在心意^_^ 我要捐贈: 點擊捐贈Cocos2d-X原始碼下載:點我傳送將一個變數賦值給還有一個對象只建立還有一個對這個對象的引用。類似於Java中,賦值是一個引用。參考C++或者C的指標來理解就easy了。這裡的賦值事實上就是指標地址賦值而已。Foundation類實現了名
標籤: 1,用於通知某個對象該做什麼,即通知對象去執行某動作。在Objective-c中,“[]”的意義:它們用於通知某個對象該做什麼。這種通知對象執行某中操作的行為被稱為“發送訊息”。例如:[shape
標籤:self,superself理解為C++裡的this,當使用self調用方法時,會從當前類中開始尋找,沒有就依次尋找上一級父類。super就是父類,可以直接調用父類的方法。+/-OOP中存在公有方法和私人方法,OC中沒有,但是用+/-來表示普通方法和靜態方法。另外可以用@private來表示私人變數,OC中所有的變數預設都是私人的,方法都是公有的。深拷貝和淺拷貝淺拷貝就是增加一個指標指向記憶體位址,深拷貝是增加一個指標並且申請一個新的記憶體。深拷貝的好處很明顯了,前一種方式可能出現A
標籤:1.是否可以把比較耗時的操作放在通知中樞中? 通知在哪一個線程發的,那麼對通知事件的處理就在同一個線程中進行;如果在非同步線程發的通知,那麼可以執行比較耗時的操作;如果在主線程發的通知,那麼就不可以執行比較耗時的操作。 2.Foundation對象和CoreFoundation對象有什麼區別?Foundation對象時OC的;CoreFoundation對象是C的;Foundation對象和CoreFoundation對象是可以互相轉換的,資料類型之間的轉換&middo
標籤: NSDate NSDate 時間類,繼承自NSObject,其對象表示一個時間點 NSDate *date = [NSDate date]; NSLog(@"date = %@", date); 2015-12-04 19:08:00.624 OCNSDate[2955:309612] date = 2015-12-04 11:08:00 +0000 列印顯示的是格裡尼治時間 年-月-日 時:分:秒 + 時區
標籤:Objective-C中的分類允許我們通過給一個類添加方法來擴充它(但是通過category不能添加新的執行個體變數),並且我們不需要訪問類中的代碼就可以做到。Objective-C中的協議是普遍存在的介面定義方式,即在一個類中通過@protocol定義介面,在另外類中實現介面,這種介面定義方式也成為“delegation”模式,@protocol聲明了可以唄其他任何方法類實現的方法,協議僅僅是定義一個介面,而由其他的類去負責實現。在本章中,我們來看看runtime
標籤:“加號代表static”是錯誤的說法,可能跟你那樣表達的人其實意思是:“前置加號的方法相當於Java 裡面的靜態方法”。在Oc中,方法分為類方法和執行個體方法。前置加號(+)的方法為類方法,這類方法是可以直接用類名來調用的,它的作用主要是建立一個執行個體。有人把它稱為建立執行個體的Factory
標籤:在iOS中需要精確計算時,double, float類型往往會出現不可預料的問題: 在調試過程中可以看到 doule 類型 d3 在計算過程中值不是預計的9999.99。 如果在要用中計算涉及到金額等重要資料,不建議使用這種不可控結果的方式,可以採用iOS提供的另外一種支援準確精度計算的資料類型
標籤:1.Foundation架構引用一張圖片Cocoa可以看作許多架構的集合,在iOS中包括Foundation架構和UIKit架構,Foundation架構裡主要是一些API供程式開發使用,UIKit則包括了許多UI繪製的函數。2.字串操作初始化字串: NSString *str1 = [[NSString alloc] init]; str1 = @"Hello,iOS."; NSString *str2 = [[NSString alloc]
標籤:Objective-C 和 Core Foundation 對象相互轉換的記憶體管理 iOS允許Objective-C 和 Core Foundation 對象之間可以輕鬆的轉換,拿 NSString 和 CFStringRef 來說,直接轉換豪無壓力:CFStringRef aCFString = (CFStringRef)aNSString;NSString *aNSString = (NSString *)aCFString;針對記憶體管理問題,ARC 可以幫忙管理
標籤:首先 OC中的對象都是用指標表示,方法的調用是基於訊息機制實現,== 比較的自然是指標指向的地址然後 說下 isEqual 和 isEqualToString 的區別IsEqual 是 NSObject 的方法 ,而 isEqualToString 是 NSString 的方法因此從繼承關係角度來說isEqualToString 是 isEqual 的衍生方法首先貼個蘋果官方重寫isEqual 的demo- (BOOL)isEqual:(id)other { if (other ==
標籤:自訂視圖現在有些混亂,屢一下大概的編寫思路:1.建立一個視圖控制器,將此視圖控制器指定為window的根視圖控制器2.自訂視圖LTView,明確LTView內部的控制項,聲明為屬性,重寫initWithFrame:布局方法,先將子視圖添加上去。完善顯示效果,需要再去定義一個初始化方法,參數為視圖的顯示內容3.自訂視圖,明確內部控制項,聲明為屬性,重寫initWithFrame:布局方法,添加子視圖4.視圖控制器內部,重寫loadView方法,指定視圖控制器的空白視圖為自訂的視圖(或者可以不