Time of Update: 2018-12-03
關於KVC(Key-Value-Coding)鍵-值編碼的概念 1、鍵-值編碼是一種用於間接訪問對象屬性的機制,使用該機制不需要調用setter、getter方法,和變數執行個體就可以訪問對象的屬性。 2、鍵-值編碼方法在OC的非正式協議(類目)NSKeyCodingValue中被聲明,預設的實現方法有NSObject提供。
Time of Update: 2018-12-03
Magwin方法1、安裝編譯器 Objective-C的編譯器有很多,其中LLVM屬於從GCC發展出來的,主要使用在蘋果的平台中,GNU可以使用GnuStep,網址是http://www.gnustep.org/experience/Windows.html,從這裡可以下載Windows版本的gcc編譯器,配合codeblocks可以編譯調試object c程式。 進入下載頁面,下載上面3個軟體包,安裝,例如安裝到D:\GNUstep,2、安裝CodeBlocks
Time of Update: 2018-12-03
由於本人編寫程式的經驗並不是相當的豐富,且對物件導向的理解還停留在知道原理而而不知道怎麼高效的去用的狀態下,所以這裡只簡單的介紹一下我的理解,物件導向編程猶如我們中華的文化博大精深,還需要繼續努力學習、練習、實踐之。類的定義oc的類分為兩個檔案,一個是.h檔案一個是.m檔案.h檔案存放類、函式宣告,類聲明用關鍵字@interface @end來聲明.m檔案存放類的具體實現,類實現使用關鍵字@implementation @end來實現對象方法和類方法聲明和實現一個類的函數,需要使用+或者-
Time of Update: 2018-12-03
c/c++中使用#include來包含標頭檔,缺點就是同一個標頭檔可能被包含多次。oc中使用了#import來包含標頭檔,優點就是同一個標頭檔只能包含一次。@class和#import是為瞭解決循環參考導致的死結問題#import會包含這個類的所有資訊,包括實體變數和方法,而@class只是告訴編譯器,其後面聲明的名稱是類的名稱,至於這個類是如何定義的,暫時不用考慮,後面會再告訴使用者。在類的聲明.h檔案中一般只需要知道被引用的類的名稱就可以了,不需要知道其內部的實體變數和方法,所以在類的聲明.
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
Objective-C中的@property、@synthesize及點文法都是與兩個函數有關的,一是setter函數,另一個是getter函數以前我們是這樣來定義setter與getter函數的@interface Dog:NSObject{int age;}-(void)setAge:(int)newAge;-(void)age;@end@implementation Dog-(void)setAge:(int)newAge{age = newAge;}-(void)age{return
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
建立NSString的方法:NSString *str1 = @"Hello World";NSString *str2 = [[NSString alloc] init];str2 = @"Hello World";[str2 release];NSString *str3 = [[NSString alloc] initWithString:@"Hello World"];[str3 release]; //記憶體被回收,但是變數可改變指標位置,繼續使用該變數str3 =
Time of Update: 2018-12-03
1、NSNumber:NSArray、NSDictionary不允許放基礎資料型別 (Elementary Data Type)NSNumber可以把基礎資料型別 (Elementary Data Type)封裝成對象,這樣就可以間接的把基礎資料型別 (Elementary Data
Time of Update: 2018-12-03
[str hasPrefix:@"12"]; //以12開頭 傳回值Bool[str hasSuffix:@"txt"]; //是否以txt結尾 返回Bool//搜尋字串[str rangeOfString:@"345"]; //返回位置 返回NSRange如果找不到返回{NSNotFound,0}//從尾部搜尋NSRange range = [str rangeOfString:@"456" options:NSBackkwardsSearch];#pragma mark
Time of Update: 2018-12-03
NSObject常用的方法:所有的OC對象都有這些方法,見demo的代碼反射:Class的反射通過類名的字串形式執行個體化對象Class class = NSClassFromString(@"Student");Student *stu = [[class alloc] init];類名轉換為字串:Class class = [Student class];NSString *className =
Time of Update: 2018-12-03
copy設計的目的:改變副本的時候,不會影響到原來的對象1、一個對象使用copy或者mutableCopy方法可以建立對象的副本2、copy需要先實現NSCopying協議,建立的是不可改變副本(NSString、NSArray、NSDictionary)mutableCopy
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文法之字串那些事雨松MOMO原創文章如轉載,請註明:轉載至我的獨立網域名稱部落格雨松MOMO程式研究院,原文地址:http://www.xuanyusong.com/archives/381Objective-C 中核心處理字串的類是 NSString 與 NSMutableString ,這兩個類最大的區別就是NSString 建立賦值以後該字串的內容與長度不能在動態更改,除非重新給這個字串賦值。而NSMutableString
Time of Update: 2018-12-03
一、記憶體管理黃金法則:The basic rule to apple is everything thatincreases the reference counter with alloc,[mutable]copy[WithZone:] or retainis in charge of the corresponding [auto]release.如果一個對象使用了alloc,[mutable]
Time of Update: 2018-12-03
Objective-C 2.0增加了class extensions用於解決兩個問題:允許一個對象可以擁有一個私人的interface,且可由編譯器驗證。支援一個公有唯讀,私人可寫的屬性。私人介面(Private Interface)Objective-C 2.0以前, 若要定義私人函數,通常是在實現檔案中聲明一個"Private" category:@interface MyClass (Private) - (id)awesomePrivateMethod; @end然而,
Time of Update: 2018-12-03
想到要如何為所有的對象增加執行個體變數嗎? 使用Category可以很方便地為現有的類增加方法,但卻無法直接增加執行個體變數(有為此使用查表法的,也算曲線救國吧)。不過從Mac OS X v10.6開始,系統提供了Associative References,這個問題就很容易解決了。我根據Objective-C Reference中的樣本修改了一下,直接上代碼了。重點是其中objc_setAssociatedObject的使用, 並且其中Key是一個地址,而不是字串。#import
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-03
之前有段時間,我參與了一項使用了C++庫的Objective-C項目。寫了一篇關於混編的文章,結果卻出乎意料的成為Google搜尋中關於Objective-C++的最靠前的結果之一。後來,Apple將基於LLVM的clang做為主選編譯器。其作用之一就是可以保證Objective-C的演化,而GCC的進化卻太慢了。之前文章就不太適用了,而且在這個過程,我也收到了一些回饋,這些都促使我寫了這篇文章。回顧一下簡言之,如果你有一些C++代碼或庫,你想在Objective-C項目使用它,這就是我們要研究