iphone开发基础三和c语言混编
来源:互联网 发布:数据恢复精灵离线激活 编辑:程序博客网 时间:2024/06/09 19:00
这里面主要讲和IPHONE中和C语言混编的问题,先看一段代码:
BOOL differentInt(int m , int n){if(m!=n)return YES;elsereturn 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;}
这里我们定义了函数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 常用来做字符串处理。NSRect 常用来做图形处理,譬如:动画中不断的重新绘制矩
形等。你很容易知道这是个频繁操作的处理过程,也就是矩形要不断绘制、擦除。假如NSRect
是一个Object-C 类型,由于类实例化对象要在堆内存中动态分配存储空间,这是个很消耗资
源的操作,而动画又是频率较高的操作,反复的创建、销毁对象,效率将会极其低下。所以
Cocoa 这里将NSRect 定义为C 语言的结构体就大大提高了运行效率。相比较Android 平台,
有人说做游戏纯靠JAVA 是不行的,JAVA 最多就是画画UI 和做些简单的应用,因为JAVA 不
具备和C 语言混合编程的能力,事事都要借助对象,所以必然要引入C 去编写Android 的*.SO
的图形引擎等,以提高处理能力。
- iphone开发基础三和c语言混编
- 详解iPhone开发之Objective-C和 C 混编
- iphone开发之C++和Objective-C混编
- C++和C语言混编
- IPhone开发之C基础(三)
- IDL和C语言混编程序
- iphone开发之C++和Objective-C混编 如何在xcode中用C++的STL
- iphone开发之C++和Objective-C混编 如何在xcode中用C++的STL
- iphone开发之C++和Objective-C混编 如何在xcode中用C++的STL
- iphone开发之C++和Objective-C混编 如何在xcode中用C++的STL
- IOS开发学习基础--------C语言(三)
- iPhone开发系列文章(三)-Objective-C语言简介
- iPhone开发系列文章(三)-Objective-C语言简介
- C语言基础三
- C语言基础(三)
- Objective-c开发--MRC和ARC混编--(iOS开发)
- Objective-C ,ios,iphone开发基础:NSDictionary(字典) 和 NSMutableDictionary
- 详解swift和OC以及C语言的混编
- Ajax 改造,第 3 部分: 用 jQuery、Ajax 选项卡和照片 carousel 改进现有的站点
- 今天碰到个错误,ile was built for unsupported file format which is not the architecture being linked (armv7)
- Ajax 改造,第 4 部分: 用 jQuery 和 Ajax 表单改造现有站点
- HyperTerminal Alternatives for Windows 7 ---by Aseem
- Jquery Select操作方法集合
- iphone开发基础三和c语言混编
- [转贴]俞天任:日本家电行业还能起死回生吗
- 使用CxImage库的初体验
- mysql 操纵数据语句
- Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 3 ----数据访问层
- VC程序员常用工具篇(加补充整理)
- c++ 临时对象
- php标准库函数功能之ArrayObject
- jion方法(合并某个线程) jion()调用优先级别,把"谢霆锋"调到前面输出