1. Objective-C和C的區別
區別如下:
1.性質不同
Objective-C,通常寫作ObjC或OC和較少用的Objective C或Obj-C,是擴充C的面向對象編程語言。c語言是一門面向過程、抽象化的通用程序設計語言,廣泛應用於底層開發。
2.特點不同
Objective-C是非常實用的語言。它是一個用C寫成很小的運行庫,令應用程序的尺寸增加很小,和大部分OO系統使用極大的VM執行時間會取代了整個系統的運作相反。C語言是一種結構化語言,它有著清晰的層次,可按照模塊的方式對程序進行編寫,十分有利於程序的調試,且c語言的處理和表現能力都非常的強大。
3.創始時間不同
Objective-C創始時間是1980年代,C語言創始時間是1972年。
2. 請問 c 語言與object c語言有什麼區別
C語言是基礎語言,可以用於寫底層代碼,要想學好需要長時間的累計經驗;OC簡單來說就是C語言的封裝版,比C用起來更方便,而且更規范。OC是專門開發蘋果IOS程序的,但是在實際開發中會用到C語言的變成。現在IOS開發的程序員好多都在學習Swift,類似於js變成,效率比oc高。
3. object c 是c語言嗎
單一繼承:Objective-C不支持多重繼承,(同Java和Smalltalk),而C++語言支持多重繼承。
動態:Objective-C是動態定型(dynamicaly typed)所以它的類庫比C++要容易操作。Objective-C 在運行時可以允許根據字元串名字來訪問方法和類,還可以動態連接和添加類。
C++ 跟從面向對象編程里的Simula67(一種早期OO語言)學派,而Objecive-C屬於Smalltalk學派。 在C++里,對象的靜態類型決定你是否可以發送消息給它,而對Objecive-C來說,由動態類型來決定。Simula 67學派更安全,因為大部分錯誤可以在編譯時查出。而Smalltalk學派更靈活,比如一些Smalltalk看來無誤的程序拿到Simualr 67那裡就無法通過。從很多方面來看,C++和Objective-C的差別,與其說時技術上的,不如說是思維方式上的。
常用的系統快捷鍵:復制、粘貼 、剪切option+c,Option+V,Alt+table,Option+N,Shift+Option+N
內核環境:主要由Mach和BSD組成,但它同時也包括了網路協議棧、網路服務、文件系統和設備驅動程序
//聲明類
@interface Fraction: Object
{
int numerator; //實例變數
int denominator;
}
-(void) print; //實例方法 instance method
-(void) setNumerator: (int) n: (int[U1] )m; //帶參數的成員函數
-(void) setDenominator(int)n;
+(void) makeNumber; //類方法 class method,有點static的味道
@end
//實現類
@implementation Fraction;
-(void) print
{ printf (" %i/%i ", numerator, denominator); }
-(void) setNumerator: (int) n: (int)m
{ numerator = n; Denominator = m; }
-(void) setDenominator: (int) d
{ denominator = d; }
+(void) makeNumber{}
@end
//使用類:選擇「Command Line Utility」中的「FoundationTool」項
#importFoundation.h>
#import 「Fraction.h」
int main (int argc, char *argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];
// Fraction *myFraction = [[Fraction alloc] init];
Fraction *myFraction; //定義指針Fraction對象
myFraction = [Fraction alloc];//分配內存
myFraction = [myFraction init]; //初始化
[myFraction setNumerator: 1:3];
[myFraction setDenominator: 3];
printf ("The value of myFraction is:");
[myFraction print];
printf ("\n");
[myFraction free];
//insert code here...
NSLog(@"Julia is a pretty actress");
[pool release];]
return 0
}
4. object c語言與C++的比較
單一繼承:Objective-C不支持多重繼承,(同Java和Smalltalk),而C++語言支持多重繼承。
動態:Objective-C是動態定型(dynamicaly typed)所以它的類庫比C++要容易操作。Objective-C 在運行時可以允許根據字元串名字來訪問方法和類,還可以動態連接和添加類。
C++ 跟從面向對象編程里的Simula67(一種早期OO語言)學派,而Objecive-C屬於Smalltalk學派。 在C++里,對象的靜態類型決定你是否可以發送消息給它,而對Objecive-C來說,由動態類型來決定。Simula 67學派更安全,因為大部分錯誤可以在編譯時查出。而Smalltalk學派更靈活,比如一些Smalltalk看來無誤的程序拿到Simualr 67那裡就無法通過。從很多方面來看,C++和Objective-C的差別,與其說時技術上的,不如說是思維方式上的。
常用的系統快捷鍵:復制、粘貼 、剪切option+c,Option+V,Alt+table,Option+N,Shift+Option+N
內核環境:主要由Mach和BSD組成,但它同時也包括了網路協議棧、網路服務、文件系統和設備驅動程序
//聲明類
@interface Fraction: Object
{
int numerator; //實例變數
int denominator;
}
-(void) print; //實例方法 instance method
-(void) setNumerator: (int) n: (int[U1] )m; //帶參數的成員函數
-(void) setDenominator(int)n;
+(void) makeNumber; //類方法 class method,有點static的味道
@end
//實現類
@implementation Fraction;
-(void) print
{ printf (" %i/%i ", numerator, denominator); }
-(void) setNumerator: (int) n: (int)m
{ numerator = n; Denominator = m; }
-(void) setDenominator: (int) d
{ denominator = d; }
+(void) makeNumber{}
@end
//使用類:選擇「Command Line Utility」中的「FoundationTool」項
#import<Foundation/Foundation.h>
#import 「Fraction.h」
int main (int argc, char *argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];
// Fraction *myFraction = [[Fraction alloc] init];
Fraction *myFraction; //定義指針Fraction對象
myFraction = [Fraction alloc];//分配內存
myFraction = [myFraction init]; //初始化
[myFraction setNumerator: 1:3];
[myFraction setDenominator: 3];
printf ("The value of myFraction is:");
[myFraction print];
printf ("\n");
[myFraction free];
//insert code here...
NSLog(@"Julia is a pretty actress");
[pool release];]
return 0
}
5. 學習objectivec一定要先學c嗎
可以沒有C的基礎。與C在語法上還是有些區別的,當然有C的基礎最好了,對理解obj-c的內存管理方面是有幫助的。
雖然 Obj-C 是 C 的超集,但是和 C 是兩種世界觀。(面向過程 和 OO )
的確, C 也可以 OO 。甚至可以說, Obj-C 不就是 C 的非常好的 OO 的例子之一嘛~
不過,沒有見過好的,基於 OO 的 C 教材(現實是,如果教材關心 OO ,一般也不會基於 C 了)。所以過程的思維可能會先入為主,那樣先學 C 容易被帶到溝里去。而一些老的 C 程序員(也很優秀)寫的 Java 代碼也證實了這點,看的我死的心都有。
其實直接看 Obj-C 也無不可。 iOS App 的 Obj-C 代碼是高度框架化和自解釋的。涉及 C 的部分一般是底層的一些實現或者自己繪圖等內容,相對少用,熟悉了框架,建立了 OO 的概念再深入不遲。(既從 Obj-C -> C )
如果是從 C -> Obj-C ,從過程到 OO 的提升就是人為製造的麻煩(雖然也不太大但是畢竟沒有必要)。
而且,你會發現 C 的很多東西 Obj-C 用不到。比如 C 中分量很重的內存地址操作, iOS 的 Obj-C 程序就幾乎不涉及。而 Obj-C 繪圖部分的一些代碼很 C ,一般的 C 教程卻不怎麼講,那些內容一般會放到另外一本書裡面: 計算機圖形學-C 語言。
當然無論是從 Obj-C -> C 還是從 C -> Obj-C , C 的一些相關知識都是需要的。
6. objectivec是什麼編程思想
你好。ObjC是進行iOS開發的一門編程語言,也是官方推薦的iOS開發語言。對於沒有相應開發經驗的人來說,學習ObjC入門會慢一些。一般我把這個學習過程分為三步。
第一步,學習開發語言Objective-C。參考書看《Objective-C基礎教程》這本書就行了。書看到後來還需要補充一些關於面向對象的知識,一般計算機專業的學生都是在學C++的時候接觸這類思想的。我推薦的那本參考書里也會有一些講解,進階的學習需要以後再去看資料,沒有特定教材,因為面向對象是一種編程思想,好在Objective-C本身就是這種思想的體現,以後寫代碼的時候可以慢慢體會。學完《Objective-C基礎教程》,就會對iOS開發中所用到的基礎數據類有一個了解了,這時候應該就可以寫簡單的無界面程序了。
第二步,學習iOS開發的軟體運行原理,軟體開發思想、規范以及一些蘋果公司提供的常用標准UI(User Interface,用戶界面)控制項的使用方法。這個階段推薦的參考書是《iPhone 4與iPad開發基礎教程》,該書有中文譯本,雖然不是最新的iOS教程(最新的教程應該是iOS7開發基礎教程,但是該書沒有中文譯本,如果英文過硬,看這本書當然最好)。
第三步,熟悉常用第三方控制項。因為蘋果本身開放性的局限,其提供的標准開發庫會有一些功能局限,智慧無線的網友們開發了各種各樣的第三方控制項來實現他們想要的功能,可以使開發過程事半功倍。此部分為進階學習內容,需要在掌握前兩步內容的基礎上展開。這一步主要是試用,學習第三方代碼,要求閱讀第三方開發文檔以及代碼多一些。可以與開發同時進行,邊學變進行軟體開發。
除了參考書,這里推薦一個網站「Cocoachina蘋果開發中文站」裡面分享了很多網友的代碼,並且可以對自己學習過程中遇到的問題進行討論。學習初期,中期以及後期進階都可以在這個論壇找到相應的學習資料與代碼,並且可以通過發帖得到大神的技術指點。對應的英文網站是Stackflow,此網站偏重實際開發問題的解決,交流語言為英文。
另外,斯坦福大學每年都開設iOS開發的公開課,從Objective-C的學習到最後的控制項使用以及開發思想,架構的學習,都有涉獵,是很好的視頻教程。網易公開課中有以往課程配中文字幕的視頻,而最新的課程一般沒有中文字幕,並且,該課程選擇默認學生已經有C++編程基礎,可能對於初學者會困難一些。視頻屬於公開資源,在搜索引擎上搜索斯坦福、iOS等關鍵字,即可找到相應資源。剛剛簡單搜索了一下,優酷已經提供iOS7開發的高清視頻專輯。
最後,無論學習哪個操作系統的軟體開發,最關鍵還是要多多練習,因此大量的寫練習代碼,看別人的優秀代碼很重要。
7. 什麼ObjectiveC/C++/Java其實就是不想和別人兼容
你別開玩笑了,有些是解釋執行,一些是編譯執行,談何兼容,再者它們出現的時間也不同,其他你該說的的操作系統的兼容性,而不是語言。
8. 【C語言】Objective-C 和 C++ 的區別有哪些
這東西跟c++有什麼本質區別?為什麼蘋果會選擇obj-c而不是c++? 答:Objective-C是C的擴展,設計思路上借鑒了Smalltalk的面向對象和消息機制的思想。從我個人使用過的面向對象語言來看Objc 是對消息傳遞支持的最徹底也最顯式的。Objective-C的類中定義的方法都是消息傳遞,而且類和消息之間是運行時綁定的,運行時編譯器把消息發送轉換成對objc_msgSend方法的調用。其它的C++、Java、Python、Ruby都體現的不明顯,更傾向於對象的封裝和抽象。 Objective-C和C++基本上是兩門語言,沒有太大的關系。Objective-C本身是靜態語言,編譯後就是機器碼,執行效率很高,但引入了很多類似Python、Ruby的動態特性,像動態類型推斷,id,selector,block等特性,所以又非常靈活。用慣了Java或C++會覺得Objective-C的語法很怪,但是把心放空再去學習這門語言的話,你會很快愛上它的消息式的編程風格,加上XCode,無論是寫mac應用還是 ios應用,都會非常得心應手。 學習Objective-C不需要有c的背景,倒是學Objective-C的時候順手可以把C也學了或溫習下,由於Objective-C是C的超集,所以在Objective-C環境執行C程序毫無問題。 關於蘋果為什麼採用Objective-C的問題,說明一下,其實不是蘋果採用了Objective-C,而是喬布斯創建的Next公司的操作系統 NextStep採用了Objective-C作為原生語言。NextStep是以Mach和BSD為基礎,Objective-C是其語言和運行庫,後來的事大家都清楚,蘋果買了NextStep,喬布斯回歸蘋果,NextStep也成了Max OS X的基礎。
9. Objective-C和C語言有什麼關系
Objective-C是C語言的嚴格超集。
任何C語言程序不經修改就可以直接通過Objective-C編譯器,在Objective-C中使用C語言代碼也是完全合法的。Objective-C被描述為蓋在C語言上的薄薄一層,因為Objective-C的原意就是在C語言主體上加入面向對象的特性。Objective-C的面向對象語法源於Smalltalk消息傳遞風格。所有其他非面向對象的語法,包括變數類型,預處理器,流程式控制制,函數聲明與調用皆與C語言完全一致。但有些C語言語法合法代碼在objective-c中表達的意思不一定相同,比如某些布爾表達式,在C語言中返回值為true,但在Objective-C若與yes直接相比較,函數將會出錯,因為在Objective-C中yes的值只表示為1。
10. 請問 c 語言與object c語言有什麼區別
C語言是基礎語言,可以用於寫底層代碼,要想學好需要長時間的累計經驗;OC簡單來說就是C語言的封裝版,比C用起來更方便,而且更規范。 OC是專門開發蘋果IOS程序的,但是在實際開發中會用到C語言的變成。現在IOS開發的程序員好多都在學習Swift,類似於js變成,效率比oc高。