Time of Update: 2018-12-04
深入理解Objective-c中@class的含義objective-c中,當一個類使用到另一個類時,並且在類的標頭檔中需要建立被引用的指標時, 如下面代碼: A.h檔案C代碼 #import "B.h" @interface A : NSObject { B *b; } @end 為了簡單起見:A類是引用類,B類是被引用類,這裡先不考慮A類的實現檔案。 通常引用一個類有兩種辦法:
Time of Update: 2018-12-04
記憶體管理基礎 當你為Mac OSX編寫應用程式時,你可以選擇允許記憶體回收。這意味著如果不是在特別複雜的情況下,你不用考慮記憶體管理。然而,你並不會總是工作在支援記憶體回收的環境中。這樣的話,你就需要知道一些基本概念。如果你通過手工alloc的方式建立一個對象,之後你需要release這個對象。同樣,你也不能手工釋放(release)一個能自動釋放(autoreleased)的對象,因為這將會使你的應用程式崩潰。 以下是兩個例子: //string1 將被自動釋放 NSString*
Time of Update: 2018-12-04
Objective-C中,調用方法被稱為發送訊息,通知對象執行某種操作。文法如下:[shape draw] 一、類聲明(介面):@interface TestCoop : NSObject { int iMonth; int iYear; int iDay;}- (void) setYear: (int) iYear;- (void) primalSetData: (int)iYear :(int)iMonth :(int)iDay;- (void) setData:
Time of Update: 2018-12-04
C++中的多態(兩種):編譯時間匹配:函數重載,依據成員函數的名字、形參類型、形參個數等不同來實現不同的函數調用匹配;運行時匹配:虛函數,具體就是通過將父類或抽象類別聲明時成員函式宣告為virtual,然後子類繼承並實現,應用時,通過將子類對象地址賦給其父類類型的指標(注,抽象類別不能執行個體化,即不能定義對象,但是可以定義指向該類類型的指標和引用),通過調用賦值後的父類指標指向的虛函數來達到調用不同子類對該虛函數的不同實現的目的。C++中實現運行時多態使用virtual.Obiective-C
Time of Update: 2018-12-03
NSArray和NSSet所實現的準系統其實都差不多,這和其他語言如java有很大差別,NSArray的儲存資料的方式是連續的,後一個資料在記憶體中是緊接著前一個資料的,而NSSet在儲存的時候並不是需要一塊連續的記憶體,有可能我第一個資料在這個地方,而第二個資料和第一個資料中間還隔得有其他內容,我只是在儲存第二個資料的時候,隨便找了個可以放下的位置就存下來了那麼他們這麼做的好處是什麼呢?NSSet由於在底層使用hash的思想實現的,所以他就保證了裡面儲存的對象必須是唯一的,而數組可以儲存相同的
Time of Update: 2018-12-03
類的延展就如同是“匿名”的類目,延展中聲明的方法在類的@implementation和它對應的@end中實現。 類有時需要讓方法只有自己可見,我們可以通過延展的方式定義類的私人方法。我們來看看延展的寫法,注意,下面的所有代碼均定義在.m檔案中,還要注意那個括弧#import "Person.h"@interface Person()-(void)privateFuc;@end@implementation Person-(void)privateFuc{ }@
Time of Update: 2018-12-03
OC中的協議類似於java的借口 協議是一種特殊的程式設計模式,用於聲明專門被別的類實現的方法,協議在以下場合非常有用: 1、需要有別的類實現的方法。 2、聲明未知類的借口 3、兩個類之間通訊協議的基本特點 協議可以被任何類實現 協議本身不是類,他是定義一個其它類可實現的介面 類目也可以採用協議協議的聲明與實現 @required:表示必須強制實現的方法
Time of Update: 2018-12-03
使用XCode的提示功能,只需要記住類的名字及常用的函數就好了,其他的函數可以根據提示來查看,按ESC鍵可以查看該類的函數 Foundtion架構
Time of Update: 2018-12-03
對象的歸檔是指將對象寫入檔案儲存在硬碟上,當再次擋開程式的時候,可以還原這些對象。對象的歸檔也叫對象的序列化或對象的持久化資料的持久性儲存的方式: 1、對象歸檔NSKeyedArchiver 2、NSUserDefaults 3、屬性列表化(NSArray,NSDictionary) 4、SQLite資料庫、Core Data資料庫歸檔的形式: 1、對Foundation庫中對象進行歸檔
Time of Update: 2018-12-03
demo代碼如下:數組排序有四種方法:1、基本排序方式:利用NSString中提供的compare方法進行排序,見demo的arraySort12、自訂compare在實體類中自訂compareStudent方法,實現排序邏輯3、利用block進行排序:sortedArrayUsingComparator4、進階排序方法利用排序描述器,自訂排序優先順序Book.h檔案:#import <Foundation/Foundation.h>@interface Book :
Time of Update: 2018-12-03
常用與建立NSDictionary的方法:+ (id)dictionary;+ (id)dictionaryWithObjtct:(id)object forKey:(id <NSCopying>)key; + (id)dictionaryWithObjectAndKeys:(id)firstObject,...+ (id)dictionaryWithDictionary:(NSDictionary *)dict+
Time of Update: 2018-12-03
FW: http://blog.csdn.net/dboylx/archive/2009/02/15/3893770.aspx 讀了上篇記憶體管理文檔後,已經對Objective-c記憶體管理機制有了初步的瞭解。但僅賃那個其實還遠遠不夠,真正的項目中仍然會遇到記憶體管理上的問題。在具備了基礎的理論知識後,還需要些記憶體管理上的技巧與經驗。這點由其對從JAVA類語言過來的程式員,咱們實話實說,記憶體管理真不是咋們長項,更需要花更多的時間與精力來積累相關知識。不過話又說回來,人都說做生意的都講究吃虧
Time of Update: 2018-12-03
Objective-C的方法替換(Method Replacement for Fun and Profit)本文將要討論Objective-C中的方法替換(method replacement)和swizzling(移魂大法)。 重寫類的方法(Overriding Methods)Overriding methods在任何物件導向語言中都很常見,主要用於子類化中。在子類中複寫一個方法,然後在子類的執行個體就可以使用這個被重寫的方法。 對於一個你無法控制其執行個體化(instantiation)
Time of Update: 2018-12-04
OC中的blocks和C++中的函數指標類似,從外觀和使用上可以看出Int(*CFunc)(int a); //C語言的函數指標。 調用 Intret=(CFunc)(10);Int(^BFunc)(int a); //Blocks 調用 intret=(BFunc)(10);也可以使用typedef關鍵字來定義blockstypedef (void)(^BFunc)(int a,int b);BFunc func=^(
Time of Update: 2018-12-04
Objective-C文法之詞典對象的那些事兒雨松MOMO原創文章如轉載,請註明:轉載至我的獨立網域名稱部落格雨松MOMO程式研究院,原文地址:http://www.xuanyusong.com/archives/421 做過Java語言或者 C語言開發的朋友應該很清楚關鍵字map
Time of Update: 2018-12-04
在C++中,類方法有重載(overload)、覆蓋(override)和隱藏(hide)的概念(當然,函數也可重載。)。C++的覆蓋和隱藏是個非常容易混淆的概念,尤其隱藏。學到Objective-C,因為它與C++有相似的地方,所以對此也格外留心。從下面代碼測試結果可以看出,OC遠沒有C++那麼“靈活”。具體結論輸出資訊一目瞭然。/** * test_Hide.m */ #import <Foundation/Foundation.h> // ---- @interface
Time of Update: 2018-12-04
以下內容主要是學習《Effective Objective-C 2.0》所做的筆記,我所購買的原書為英文原版,由於自己英文水平有限,理解可能有疏漏原書購買地址:亞馬遜1、Accustoming Yourself to Objective-CItem 1: Familiarize Yourself with Objective-C's Roots一些知識點:(1)在棧記憶體中存放了一個指向一塊堆記憶體的指標(注意指標在棧中,所指的資料在堆中)(2)Objective-C
Time of Update: 2018-12-04
以下內容主要是學習《Effective Objective-C 2.0》所做的筆記,我所購買的原書為英文原版,由於自己英文水平有限,理解可能有疏漏原書購買地址:亞馬遜4、Protocols and CategoriesItem 23: Use Delegate and Data Source Protocols for Interobject Communication一些知識點:(1)一個協議的命名通常是類名之後加一個Delegate。(2)通常將一個Delegate聲明在類延續類別中。(3)
Time of Update: 2018-12-04
以下內容主要是學習《Effective Objective-C 2.0》所做的筆記,我所購買的原書為英文原版,由於自己英文水平有限,理解可能有疏漏原書購買地址:亞馬遜5、Memory ManagementItem 29: Understand Reference
Time of Update: 2018-12-04
以下內容主要是學習《Effective Objective-C 2.0》所做的筆記,我所購買的原書為英文原版,由於自己英文水平有限,理解可能有疏漏原書購買地址:亞馬遜6、Blocks and Grand Central DispatchItem 37: Understand Blocks一些知識點:(1)block結構return_type