c语言编程软件 for mac
展开全部 Using C++ With Objective-C 苹果的Objective-C编译器允许用户在同一个源文件里自由地混合使用C++和Objective-C,混编后的语言叫Objective-C++。
有了它,你就可以在Objective-C应用程序中使用已有的C++类库。
Objective-C和C++混编的要点 在Objective-C++中,可以用C++代码调用方法也可以从Objective-C调用方法。
在这两种语言里对象都是指针,可以在任何地方使用。
例如,C++类可以使用Objective-C对象的指针作为数据成员,Objective-C类也可以有C++对象指针做实例变量。
下例说明了这一点。
注意:Xcode需要源文件以".mm"为扩展名,这样才能启动编译器的Objective-C++扩展。
复制代码/* Hello.mm * Compile with: g++ -x objective-c++ -framework Foundation Hello.mm -o hello */#import class Hello {private: id greeting_text; // holds an NSStringpublic: Hello() { greeting_text = @"Hello, world!"; } Hello(const char* initial_greeting_text) { greeting_text = [[NSString alloc] initWithUTF8String:initial_greeting_text]; } void say_hello() { printf("%s/n", [greeting_text UTF8String]); }};@interface Greeting : NSObject {@private Hello *hello;}- (id)init;- (void)dealloc;- (void)sayGreeting;- (void)sayGreeting:(Hello*)greeting;@end@implementation Greeting- (id)init { if (self = [super init]) { hello = new Hello(); } return self;}- (void)dealloc { delete hello; [super dealloc];}- (void)sayGreeting { hello->say_hello();}- (void)sayGreeting:(Hello*)greeting { greeting->say_hello();}@endint main() { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; Greeting *greeting = [[Greeting alloc] init]; [greeting sayGreeting]; // > Hello, world! Hello *hello = new Hello("Bonjour, monde!"); [greeting sayGreeting:hello]; // > Bonjour, monde! delete hello; [greeting release]; [pool release]; return 0;} 正如你可以在OC接口中声明C结构一样,你也可以在OC接口中声明C++类。
跟C结构一样,OC接口中定义的C++类是全局范围的,不是OC类的内嵌类(这与标准C(尽管不是C++)提升嵌套结构定义为文件范围是一致的)。
为了允许你基于语言变种条件化地编写代码,OC++编译器定义了__cplusplus和__OBJC__预处理器常量,分别指定C++和OC。
如前所述,OC++不允许C++类继承自OC对象,也不允许OC类继承自C++对象。
复制代码class Base { /* ... */ };@interface ObjCClass: Base ... @end // ERROR!class Derived: public ObjCClass ... // ERROR! 与OC不同的是,C++对象是静态类型的,有运行时多态是特殊情况。
两种语言的对象模型因此不能直接兼容。
更根本的,OC和C++对象在内存中的布局是互不相容的,也就是说,一般不可能创建一个对象实例从两种语言的角度来看都是有效的。
因此,两种类型层次结构不能被混合。
你可以在OC类内部声明C++类,编译器把这些类当作已声明在全局名称空间来对待。
就像下面: 复制代码@interface Foo { class Bar { ... } // OK}@endBar *barPtr; // OK OC允许C结构作为实例变量,不管它是否声明在OC声明内部。
复制代码@interface Foo { struct CStruct { ... }; struct CStruct bigIvar; // OK} ... @end Mac OS X 10.4以后,如果你设置fobjc-call-cxx-cdtors编译器标志,你就可以使用包含虚函数和有意义的用户自定义零参数构造函数、析构函数的C++类实例来做为实例变量(gcc-4.2默认设置编译器标志fobjc-call-cpp-cdtors)。
OC成员变量alloc完以后,alloc函数会按声明顺序调用构造器。
构造器使用公共无参数恰当的构造函数。
OC成员变量dealloc之前,dealloc方法按声明顺序反序调用调用析构函数。
OC没有名称空间得概念。
不能在C++名称空间内部声明OC类,也不能在OC类里声明名称空间。
OC类,协议,分类不能声明在C++ template里,C++ template也不能声明在OC接口,协议,分类的范围内。
但是,OC类可以做C++ template的参数,C++ template参数也可以做OC消息表达式的接收者或参数(不能通过selector)。
C++词汇歧义和冲突 OC头文件中定义了一些标识符,所有的OC程序必须包含的,这些标识符识id,Class,SEL,IMP和BOOL。
OC方法内,编译器预声明了标识符self和super,就想C++中的关键字this。
跟C++的this不同的是,self和super是上下文相关的;OC方法外他们还可以用于普通标识符。
协议内方法的参数列表,有5个上下文相关的关键字(oneway,in,out,inout,bycopy)。
这些在其他内容中不是关键字。
从OC程序员的角度来看,C++增加了不少新的关键字。
你仍然可以使用C++的关键字做OC selector的一部分,所以影响并不严重,但你不能使用他们命名OC类和实例变量。
例如,尽管class是C++的关键字,但是你仍然能够使用NSObject的方法class: 复制代码[foo class]; // OK 然而,因为它是一个关键字,你不能用class做变量名称: 复制代码NSObject *class; // Error OC里类名和分类名有单独的命名空间。
@interface foo和@interface(foo)能够同时存在在一个源代码中。
OC++里,你也能用C++中的类名或结构名来命名你的分类。
协议和template...
如何在mac os x上写C程序
有一个叫xcode的软件这个软件可以实现c语言编程,这是一个苹果原生的程序,是为苹果程序的开发人员编写的,但是我们也可以用。
下载地址在威锋论坛上应该是有的,安装之后在你电脑的macintosh hd里面的developer里面的applications里面就会看到这个图标了点开之后选择creat a new xcode后会有4个图标出现选择最后一个command line tool并在下面的type 中选择c,在点击choose就会进入编译界面进入之后,会有3个小的file name选择main.c这个,在下面的编译框中就会出现hello world的编译事例,把这个事例删了,编自己的程序就ok。
编完了,请按build and run按钮,如果出现是否保存的对话框,就点是,这是对你的编程进行一个保存。
最后按住command+shift+R这三个键就可以看到运行结果了,如果不能运行,就是程序有错呗!
学会android就会ios开发吗?
展开全部 这个不一定,ios和android不一样,但是如果学会android再学ios就比较容易!以下是android与ios的比较:入门难度:Android操作系统上的各种应用开发,绝大部分都是使用JAVA来开发的,跑在Dalvik虚拟机上,一小部分使用NDK,上手相对容易。
而iOS则使用Objective-C来做开发,要想深入的学iOS,不仅仅是有Objective-C开发基础,还要具备MacOS/Darwin、C/C++高级编程才能深入下去,所以入门相对难一些,以后更深奥,如果C语言基础比较好,可以选择iOS。
开发现状:Android是开源的,在设计上可以自由替换系统组件,Google不会管你。
而iOS上唯一的下载应用途径就是Appstore,开发者做应用上线还要通过Apple审核,就算通过了,如果调用了不该用的API,一样随时可以下架,管理非常严格。
所以,iOS上的精品软件多,开发者也容易挣钱,Android上虽然也有精品,但垃圾软件更多,门槛低缺乏行业标准,软件基本上都是免费,卖不上钱。
就业薪水:从以上两点不难看出,为什么做iOS开发的工资比安卓高一些。
以大学毕业生为例,经过Android培训后,就业月薪在4000-5000元左右,有经验的话起薪将超过7000元;经过iOS培训后,就业月薪平均在5000-6000元左右,有经验的话起薪将超过9000元。
不过这个数字只是一个大概的范围,具体情况还要看个人的能力。
比较总结:究竟学安卓好还是学ios好?这个问题要具体问题具体分析,因人而异,不能光看薪水高低和外界乱评。
如果JAVA基础比较好,建议学Android;如果C语言比较好,建议学iOS。
不管你选择学什么,只要技术学扎实了,未来几年都会很吃香,尤其是iOS,市场规范管理有序,做应用开发比较省心。
最后,套用一位网友所说:“你的兴趣才是你的心意,不可为做而做,那样你就只是工具了。
”...
零基础如何学习ios开发?
自己去年12月的时候说要更新一个详细的答案,结果就被我自己烂尾忘记了,最初写这份答案的时候自己还是在摸索阶段,推荐了下面这些材料:斯坦福大学的CS193p公开课:最新版是2013年winter。
课程不仅包括iOS入门基础知识,而且还会布置由该教授亲自设计、涵盖整个课程的作业。
苹果官方文档:每一份GUIDE都是一本迷你的教材,写得很精致,而且每一份guide都会延伸到其他知识。
可以从这篇开始:马上着手开发 iOS 应用程序。
Ray Wenderlich:很多step by step的教程,适合掌握一定知识之后跟着教程做着玩。
上面这三分资料,确实就是我刚开始学习iOS开发的时候用得最多的资料,在着手开始iOS Code之前,需要学习相关Objective-C的知识。
对我帮助最大的可以说是CS193p这个课程(免费的哦),我跟着这个课程一行一行代码完成布置的作业,课程完成之后我就能够自己写一个简单的app出来,并且我也知道该在哪里问问题、怎样找答案(很重要)。
当我了解整个app的制作流程之后,我就给自己定计划,1个月之内必须开发出一个app,从原型设计、界面设计、到CODE。
最终我做了几个实验性的app,虽然没有在app store上架,但是能够在自己的ipad、iphone上运行展示,我就拿着这几个app去面试,很幸运地找到现在的工作。
工作之后一直在使用的材料:苹果官方文档,必须的参考书;StackOverFlow,一有问题就问他;Github,搜索关键词iOS或者objective-c,会发现很多高手已经把大部分基础性功能实现并且贡献出来了;另外teamtreehouse提供收费的在线教程,应该比较容易入手。
所以我认为,其实用什么材料虽然也很重要,但是市面上优质的材料呢,不外乎那么几份,最重要的是自己有一个idea要落实下来把它完成、写成一个app,这个过程当中自己自然就会去找答案、找材料、解决答案啦。
希望能帮助到跟我一样初学入门的朋友。
转载
转载请注明出处51数据库 » ios c编程软件下载
来壁咚