百韵网 >>  正文

用objective c写一个聊天软件都需要什么? 跪求大神们解答!!很多基础问题!!本人菜鸟一个!!见补充 Objective-C的语言特点

来源:www.baiyundou.net   日期:较早时间
如果是课程设计类的应用,就不要使用XMPP了,你用了XMPP几十行代码就完了,肯定交不了作业,并且既然是作业重点是自己了解其中原理,而非用一个成熟的XMPP框架。

如果用XMPP该怎么做?
1,下载个openfire,zip的,解压之后有个exe,直接双击运行就行了,运行之后会提示你设置一些配置,比如管理员账号和密码,mysql的位置,然后正式启动时它会自己自己连接mysql并且创建它需要的数据库和表。然后你就可以打开openfire的管理端,添加一些账号和聊天室等等配置(属于比较高级的成熟聊天服务器,当然配置就比较多和复杂)
2,XMPP客户端有很多种第三方实现,有java的有c++的有ios的。可以去网上搜索,客户端有很多层次的,有代码框架,有成品exe。代码框架就是你加入到你的程序里面用,成品exe就是直接启动就可以用,比如成品的程序有spark,直接可以启动。c++的框架有gloox什么的。 框架下载下来就是一堆代码文件或者lib库,或者java的jar包。

如果不使用XMPP?
开发一个基于TCP的服务器程序,实现接受消息,转发消息,并且维持连接。

客户端连接服务器,要实现聊天数据协议的设计,协议中要负责传递上线,下线,消息来源,消息目标,发送时间等等元素。要自己写生成数据包和拆解数据包的代码。

客户端发送一条消息的时候,后台将数据生成数据包(字符串或者二进制),然后传递给服务器,服务器做拆解处理,取出收信人的信息,并且在当前所有连接中找到该收信人的连接,并且转发出去。客户端再做反向处理,拆解数据包,将聊天文字显示到界面。

Objective-C的语言特点~

Objective-C是非常实用的语言。它是一个用C写成很小的运行库,令应用程序的尺寸增加很小,和大部分OO系统使用极大的VM执行时间会取代了整个系统的运作相反。Objective-C写成的程序通常不会比其原始码大很多。而其函式库(通常没附在软件发行本)亦和Smalltalk系统要使用极大的内存来开启一个窗口的情况相反。因此,Objective-C它完全兼容标准C语言(C++对C语言的兼容仅在于大部分语法上,而在ABI(Application Binary Interface)上,还需要使用extern C这种显式声明来与C函数进行兼容),而在此基础上增加了面向对象编程语言的特性以及Smalltalk消息机制。 Objective-C的最初版本并不支持垃圾回收。在当时这是争论的焦点之一,很多人考虑到Smalltalk回收时有漫长的死亡时间,令整个系统失去功用。Objective-C为避免此问题才不拥有这个功能。虽然某些第三方版本已加入这个功能(尤是GNUstep), Apple在其Mac OS X 10.3中仍未引入这个功能。虽然Objective-C是C的超集,但它不是C的基本类型为第一级的对象。 和C++不同,Objective-C不支持运算子重载(它不支持ad-hoc多型)。亦与C++不同,但和Java相同,Objective-C只容许对象继承一个类别(不设多重继承)。Categories和protocols不但可以提供很多多重继承的好处,而且没有很多缺点,例如额外执行时间过重和二进制不兼容。Objective-C和C++的比较单一继承:和Java、Smalltalk一样,Objective-C不支持多重继承,而C++语言支持多重继承。动态:Objective-C是动态定型(dynamicaly typed),它的类库比C++容易操作。Objective-C 在运行时可以允许根据字符串名字来访问方法和类,还可以动态连接和添加类。C++ 跟从面向对象编程里的Simula 67(一种早期OO语言)学派,而Objecive-C属于Smalltalk学派。在C++里,对象的静态类型决定你是否可以发送消息给它,而对Objective-C来说,由动态类型来决定。Simula 67学派更安全,因为大部分错误可以在编译时查出。 而Smalltalk学派更灵活,比如一些Smalltalk 看来无误的程序拿到Simualr67那里就无法通过。从很多方面来看,C++和Objective-C的差别,与其说是技术上的, 不如说是思维方式上的。你是否想更安全而舍弃灵活性?Simular67学派的支持者称既然程序设计出色何必再要灵活性,而 Smalltalk学派则称为了灵活可以容忍运行时多出错。 Apple在其Mac OS X 10.3中仍未引入垃圾回收这个功能。不过令人欣慰的是在Apple发布的Xcode4中已经支持自动释放(不等同于严格意义上的垃圾回收,因为两者机制不同)。在Xcode4中的自动释放,也就是ARC(Automatic Reference Counting)机制,不需要用户手动去Release一个对象,而是在编译期间,编译器会自动帮你添加[NSObject release]。另一个问题是Objective-C不包括命名空间机制(namespace mechanism),取而代之的是程序设计师必须在其类别名称加上前缀,时常引起冲突。在2004年,在Cocoa编程环境中,所有Mac OS X类和函数均有“NS”作为前缀,例如NSObject或NSButton,以表明它们属于Mac OS X核心(使用“NS”是由于这些类和函数在NeXTSTEP开发时定下的)。虽然Objective-C是C的超集,但它不视C的基本型为第一级的对象。和C++不同,Objective-C不支援运算符重载(它不支持ad-hoc多型)。亦与C++不同,但和Java相同,Objective-C只容许对象继承一个类别(不设多重继承)。由于Objective-C使用动态运行时类型,而且所有的方法都是函数调用(有时甚至连系统调用(syscalls)也如此),很多常见的编译时性能优化技术失效(例如:内联函数、常数传播、交互式优化、纯量取代与聚集等)。这使得Objetive-C性能劣于类似的对象抽象语言(如C++)。不过Objective-C拥护者认为既然Objective-C运行时消耗较大,Objective-CC本来就不应应用于C++或Java常见的底层抽象。

款智能机的开发语言都是C和java语言,
一 iPhone,众所周知iPhone是苹果公司的产品,那么它的开发环境首选肯定是自家的Mac系统下,Objective-C是他的开发语言,这是种改良的C语言,编译环境是Xcode,Xcode是Mac系统自带的Objective-C编译环境.现在Win平台下还没有开发iPhone的好的平台以及SDK.
二 Android Android是谷歌公司出品一款手机,它的系统平台是Linux,Android系统都可以在Linux系统下和Win平台下开发.用的是Java语言,编译环境是Java的MyEclipse环境.
三 OPhone OPhone是OMS(开放移动系统)智能操作系统的手机。为了突破TD终端瓶颈,以及促进手机终端与中国移动的网络及应用服务进行无缝对接,中国移动和播思通讯自去年开始在谷歌Android操作系统基础上,它的环境和Android差不多
四 Windows Phone 它是微软公司出品的一款新的手机操作系统,微软的东西嘛,肯定是用自己的开发环境也就是Visual Studio 它是采用C#进行开发的

相关要点总结:
(编辑:本站网友)
相关推荐
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图
@ 百韵网