㈠ xcode運行c語言
1.在蘋果電腦的菜單欄里找到Xcode如圖所示,如果在下面的菜單欄里沒有的話,點擊Launchpad如圖,在彈出的對話框中找到Xcode
㈡ oc/c++混合編程有什麼好處
java比C++好在:1.Java比C,C++簡單,學起來比C\C++容易2.Java完全對象化,比如數組在Java中是一個對象,含有length這個屬性;而不像C++中數組是一個指針。所以訪問數組,Java都會進行邊界檢查,更安全,但犧牲了速度。同時因為Java中所有類都會繼承Object這個基類,所以可以把幾個好不相乾的類用基類聯系起來,比如放在同一個數組里。3.Java中沒有指針這樣不安全(雖然指針速度快)的概念。4.Java中有完善的內存管理機制,能自動垃圾回收,最大可能降低內存溢出的可能,同時提高編程效率。5.Java中有完善的異常機制(標准C++中不夠完善)。6.java中保持數據時對象本身是在堆里,同時靠一在棧里的句柄與之連接。這個設計更合理。由以上幾點可見Java更安全。8.Java標准庫完整的多,相比之下C++除了一個STL(而且還超級難用)就沒了,實際C++編程中需要大量使用第3方庫。這很大程度上是因為Java有一些商業公司支持,更新速度快,而C++只有一個可憐的標准委員會,上一個C++標准版本還是C++98。.9.Java因為是把程序編譯為位元組碼,運行時需要JVM把位元組碼再翻譯為機器碼,所以他跨平台,一次編譯到處運行。但這也是他慢的根本原因。10.Java原生支持多線程(C++僅靠標准庫不到),原生的UI,如AWTSwing不好在:1.Java比C\C++慢。Java1.0比C慢20倍現在的Java1.6運行速度也只是C的一半。2.C++在繼承和派生上比Java更靈活3.C++中可以直接插入匯編能直接操控底層硬體所以操作系統還是得用c寫4.Java的到C++一定得到,C++得到的Java則不一定。5.Sun被甲骨文收購了之後,Java的發展很受影響。6.C++編譯的程序可以直接運行,Java需要安裝JRE有幾十MB,影響產品發布的用戶體驗。最後插一句,Java的一部分優勢會隨著C++0x的發布有所減弱。
㈢ 在linux系統中OC編程如何實現字元串連接
由於Xcode對中文支持良好,所以在開發過程中經常直接使用中文字元串。
不過蘋果推薦多語言化,需要為中文字元串添加個NSLocalizedString宏。
#!/usr/bin/python
# -*- coding: utf-8 -*-
'''''
Localization The Objective-C Code
@"..." --> NSLocalizedString(@"...", nil)
Jason Lee 2012-03-01
'''
import os, sys
import re
import codecs
targetPattern = pile('@"[^"]+"')
global newFile, newFilePointer
def isChineseCharacter(ch):
return0x4e00 <= ord(ch) <= 0x9fa5
def hasChineseCharacter(str):
for char in str:
if isChineseCharacter(char):
returnTrue
returnFalse
def buildNewString(oldStr):
newStrPrefix = 'NSLocalizedString('
newStrSuffix = ', nil)'
newStr = newStrPrefix + oldStr + newStrSuffix
return newStr
def processLine(line):
global newFile, newFilePointer
matchResult = targetPattern.findall(line)
for result in matchResult:
if hasChineseCharacter(result):
#print result, buildNewString(result)
p = pile(result)
line = p.sub(buildNewString(result), line)
newFilePointer.write(line)
def processFile(filename):
#Xcode file is saved with utf-8
global newFile, newFilePointer
newFile = 'Replaced.' + filename
newFilePointer = codecs.open(newFile, 'wb', 'utf-8')
fp = codecs.open(filename, 'rb', 'utf-8')
for line in fp:
processLine(line)
fp.close()
newFilePointer.close()
oldFile = 'Old.' + filename
os.system('mv ' + filename + ' ' + oldFile)
os.system('mv ' + newFile + ' ' + filename)
#os.system('rm -f ' + oldFile)
if __name__ == "__main__":
if len(sys.argv) > 1:
output = os.popen('ls ' + sys.argv[1]).read()
filelist = re.split('\n', output)
filelist = filelist[:-1]
#print filelist
print'Localizing...'
for file in filelist:
if os.path.exists(file):
try:
#print 'Processing File :', file
processFile(file)
except Exception as e:
print e
print'Localization Done.'
之後需要做的事情參考:
代碼沒用經過嚴格驗證,請慎用。起碼,沒有檢查該字元串是否已經加了NSLocalizedString宏。
㈣ 關於OC編程問題
if後面多了一個分號 判斷成立之後沒有代碼塊 所以多了一個ELSE
㈤ 如何將oc代碼轉換成運行時代碼
1.打開終端 ,輸入cd 切換到我們當前項目所在目錄
2.然後ls -l 看一下當前目錄下面的文件
3.然後輸入命令:clang -rewrite-objc main.m 然後回車你會看到如下畫面
4.這個時候我們再次輸入 ls -l 查看我們當前目錄下的文件 你會發現多了一個main.cpp文件 實際是c++代碼 也就是說main.m底層是轉換成了c++代碼
5.我們再次輸入open main.cpp 打開這個文件看看 裡面就是運行時代碼
6.我們來到文件末尾 找到main函數
㈥ objective-c與c和c++有什麼區別,也是一種編程語言嗎
objective-c是一種編程語言,是apple官方的應用開發語言(如iOS、MacOS上的應用)
C和C++的區別在於C++支持面向對象編程
objective-c與二者的區別其實還是有些的,OC也是面向對象編程。但是在OC中它的類也是一個對象,所有OC中的運行時可以做很多事情。
然後就是語法了,OC中類似C\C++的函數調用,成為消息,如我們調用對象A中的sayHello方法,就是給對象A發送一個sayHello的消息
[A sayHello]
其實最終還是轉換成了C函數msg_send()
另外OC的運行時代碼大部分都是用C實現的
不太清楚你要的區別指什麼,大概描述了下
㈦ 為什麼說oc是動態運行時語言objc中向一個nil對象發送消息將會發生什麼
什麼都不會發生,因為 nil 對象沒你要的那個消息
㈧ OC語言和別的語言比起來有什麼特別的嗎
首先OC做為一門面向對象語言,自然具有面向對象的語言特性,如封裝、繼承、多態。
其次它既具有靜態語言的特性(如C++),又有動態語言的效率(動態綁定、動態載入等)。整體來說,確實是一門不錯的編程語言。
OC的動態特性表現為了三個方面:動態類型、動態綁定、動態載入。之所以叫做動態,是因為必須到運行時(run time)才會做一些事情。
㈨ oc是動態運行時語言是什麼意思
多態。
主要是將數據類型的確定由編譯時,推遲到了運行時。
這個問題其實淺涉及到兩個概念,運行時和多態。
簡單來說,運行時機制使我們直到運行時才去決定一個對象的類別,以及調用該類別對象指定方法。 多態:不同對象以自己的方式響應相同的消息的能力叫做多態。
意思就是假設生物類(life)都用有一個相同的方法-eat; 那人類屬於生物,豬也屬於生物,都繼承了life後,實現各自的eat,但是調用是我們只需調用各自的eat方法。
也就是不同的對象以自己的方式響應了相同的消息(響應了eat這個選擇器)。
因此也可以說,運行時機制是多態的基礎。