iphone开发基础三和c语言混编

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-02 02:06 点击:

这里面主要讲和IPHONE中和C语言混编的问题,先看一段代码:

[html]
<span style="font-size:18px;">BOOL differentInt(int m , int n){ 
if(m!=n) 
return YES; 
else 
return NO; 

NSString *boolString(BOOL yn){ 
if(yn==YES){ 
return @"YES"; 

else{ 
return @"No"; 


int main(int argc,const char *argv[]){ 
NSLog(boolString(differentInt(5,3))); 
return 0; 

</span> 

这里我们定义了函数differentInt()用于比较两个整数是否相等,boolString()函数用于将BOOL

类型转换为字符串。这两个函数的返回值都是Object-C 中的类型,其中的BOOL 不是对象类

型,所以不使用指针,因此方法名称前面没有*,NSString 是Object-C 中的字符串对象,相

当于JAVA 中的String 类型,@”… …”是一种NSString 的字面值的表示方法,与JAVA 中的”… …”

可以直接表示字符串,而不必非得显示的用String 来引用字符串是一样的。这里注意与

Object-C 的类型中的方法定义不同的是,函数的返回值如果是指针,*写在C 语言的函数名

称前面,而不是返回值的前面。
        在main 函数中我们使用了Object-C 的函数NSLog(@”格式化字符串”,变量1,变量2,… …),这
与C 语言的printf(”格式化字符串”,变量1,变量2,… …)很相似,不过它会像JAVA 中的LOG4J
一样,在输出语句之前增加日期戳、运行的类名、自动追加换行符\n 等信息。

     你可能又会问Object-C 不都是对象吗?怎么还出来个NSLog()的函数呢?函数不是C 语言面
向过程编程的东西吗?其实Cocoa 中有很多的东西都不是对象,而是C 语言的函数、结构体
等。例如:
   struct NSRange{
   NSUInteger location;
   NSUInteger length;
}
结构体NSRang 表示一个范围,location 是范围的起始点,length 是范围的长度。
    struct NSRect{
   NSPoint point;
   NSSize size;
}

NSRange www.2cto.com 常用来做字符串处理。NSRect 常用来做图形处理,譬如:动画中不断的重新绘制矩

形等。你很容易知道这是个频繁操作的处理过程,也就是矩形要不断绘制、擦除。假如NSRect

是一个Object-C 类型,由于类实例化对象要在堆内存中动态分配存储空间,这是个很消耗资

源的操作,而动画又是频率较高的操作,反复的创建、销毁对象,效率将会极其低下。所以

Cocoa 这里将NSRect 定义为C 语言的结构体就大大提高了运行效率。相比较Android 平台,

有人说做游戏纯靠JAVA 是不行的,JAVA 最多就是画画UI 和做些简单的应用,因为JAVA 不

具备和C 语言混合编程的能力,事事都要借助对象,所以必然要引入C 去编写Android 的*.SO

的图形引擎等,以提高处理能力。

摘自 TQUDING的专栏

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • Lexical or Preprocessor Issue 'xxx.h
      • ios学习笔记(二)xcode 4.3.2下实现基本交互
      • ios版本的helloworld
      • iphone(object-c) 内存管理(3) 有效的内存管理 前半部分
      • ios学习笔记(一)xcode 4.3.2下创建第一个ios项目
      • IOS类似iphone通讯录TableView的完整demo【附源码】
      • UITableView一些方法
      • [iPhone中级]iPhone团购信息客户端的开发 (二)
      • 如何为Iphone应用创建启动界面
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1