Time of Update: 2018-08-19
可變數組比普通的數組更加靈活。在OC中的實現如下: #import <UIKit/UIKit.h>#import "AppDelegate.h"int main(int argc, char * argv[]) { NSMutableArray *arr = [[NSMutableArray alloc] init]; for (int i = 0; i < 100; i++) {
Time of Update: 2018-08-19
#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) { @autoreleasepool { ////////////////////////// //讀取檔案; //1.本地檔案; 2.網路檔案; //路徑類 NSString *string11 = @"http://www.baidu.com";
Time of Update: 2018-08-19
對於NSString,還有很多實用的方法,比如:大小寫轉換,前尾碼的匹配,字串的拼接,格式化字串的等等。下面我們來看一下: #import <Foundation/Foundation.h>int main(int argc, const char * argv[]) { @autoreleasepool { char *str1 = "Hello"; NSString
Time of Update: 2018-12-03
中文難以表達原著的意思Method and Class AttributesObjective-C now supports some gcc attributes for Objective-C methods.Syntactically, attributes for a method follow the method's declaration,and attributes for a method parameter sit between the parameter type
Time of Update: 2018-12-03
現在,我們將用Objective-C定義一個實際的類,並學習如何使用類的執行個體。同樣,我們將先學習過程。因此,實際的程式範例可能不是特別實用,那些更加實際的內容將在稍後討論。假設要編寫一個用於處理分數的程式,可能需要處理加、減、乘、除等運算。如果你還不知道什麼是類,那麼可以從一個簡單的程式開始,代碼如下:代碼清單3-1// 採用分數的簡單程式 #import <Foundation/Foundation.h> int main (int argc, char * argv[]){
Time of Update: 2018-12-03
http://www.infoq.com/cn/articles/wwdc2012-objective-c-new-feature今年2012的WWDC上,蘋果針對Objective-C和LLVM編譯器都做了重大改進,我們來看一看Objective-C增加了哪些新特性。1、方法順序無關Objective-C類由聲明檔案h和實現檔案m組成,所有的public方法都在h檔案中聲明,private方法可以寫在m檔案中,但是在早期的編譯環境中需要注意方法的順序,例如下面的代碼,在早期的編譯環境會給出警告
Time of Update: 2018-12-03
原帖地址:http://blog.prosight.me/index.php/2009/09/347在Objective-c中,當一個類需要引用另一個類,即建立複合關係的時候,需要在類的標頭檔中建立被引用類的指標。 如:Car.h#import @interface Car:NSObject{ Tire *tires[4]; Engine
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
想到要如何為所有的對象增加執行個體變數嗎? 使用Category可以很方便地為現有的類增加方法,但卻無法直接增加執行個體變數(有為此使用查表法的,也算曲線救國吧)。不過從Mac OS X v10.6開始,系統提供了Associative References,這個問題就很容易解決了。我根據Objective-C Reference中的樣本修改了一下,直接上代碼了。重點是其中objc_setAssociatedObject的使用, 並且其中Key是一個地址,而不是字串。#import
Time of Update: 2018-12-03
之前有段時間,我參與了一項使用了C++庫的Objective-C項目。寫了一篇關於混編的文章,結果卻出乎意料的成為Google搜尋中關於Objective-C++的最靠前的結果之一。後來,Apple將基於LLVM的clang做為主選編譯器。其作用之一就是可以保證Objective-C的演化,而GCC的進化卻太慢了。之前文章就不太適用了,而且在這個過程,我也收到了一些回饋,這些都促使我寫了這篇文章。回顧一下簡言之,如果你有一些C++代碼或庫,你想在Objective-C項目使用它,這就是我們要研究
Time of Update: 2018-12-04
在c++中我們可以多繼承來實現代碼複用和封裝使程式更加簡練。在objective-c中只能單繼承,不能多繼承,那麼除了協議protocol之外,我們可以實作類別似多繼承的一個方法就是,分類(category,又稱類別)。類別可以不修改原來的類(父類),和衍生類別的情況下,為原有的類增加新的方法,但是分類不能增加執行個體變數。格式(format):@interface class_name(category_name)<protocol,....>method
Time of Update: 2018-12-04
這兩天心血來潮,想看看傳說中的iphone 應用軟體是如何製作的。本著這個思想初步嘗試一下,遇到第一個問題就是windows上開發環境的搭建,畢竟只是先玩玩,買個Mac就太衝動了點,畢竟已有本本了,還不知熱度能持續多久呢。 基於Windows的Objective-C的開發運行環境的搭建可以使用GUNstep提供的一系列組件。主要用到4個軟體包:GNUstep MSYS SystemGNUstep CoreGNUstep DevelCairo BackendGUNstep官方網站
Time of Update: 2018-12-04
最近遇到這樣一個問題,以前的時候並未注意;建立一個工程,然後添加一個類,檔案結構是這樣的然後寫了這樣一小段程式,運行- (void)viewDidLoad{ [super viewDidLoad]; Test *testObj = [[Test alloc] init]; NSLog(@"release 前 %d",[testObj retainCount]); [testObj release]; NSLog(@"release 後
Time of Update: 2018-12-04
1 id cattle[3]; 2 SEL say; 3 SEL skin; 其中id
Time of Update: 2018-12-04
方法調用(Calling Methods)1. 調用 [object method]; [object methodWithInput:input]; 2.傳回值:output = [object methodWithOutput]; output = [object methodWithInputAndOutput:input];3.建立對象調用id myObject = [NSString string];NSString* myString = [NSString
Time of Update: 2018-12-04
討論Objective-C的一個奇怪的概念 meta-class在Objective-C中的每個類,都有它自己相關的meta-class,但因為你很少直接使用meta-class,所以顯得很神秘。在運行時建立一個類下面的代碼在運行時建立一個NSError新的子類,並添加一個方法到裡面: Class newClass = objc_allocateClassPair([NSError class], “RuntimeErrorSubclass”,
Time of Update: 2018-12-04
Block Apple 在C, Objective-C, C++加上Block這個延申用法。目前只有Mac 10.6 和iOS 4有支援。Block是由一堆可執行的程式組成,也可以稱做沒有名字的Function (Anonymous function)。如果是Mac 10.6 或 iOS 4.0 之前的平台可以利用 http://code.google.com/p/plblocks/ 這個project得以支援Block語法。Apple有一個叫做GCD(Grand Central