㈠ 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这个选择器)。
因此也可以说,运行时机制是多态的基础。