注册 登录
主题 : [Tutorial] Cocoa Foundation: Hello Cocoa from Console
级别: 总版主

UID: 3
精华: 5
发帖: 198
可可豆: 183 CB
威望: 593 点
在线时间: 21(时)
注册时间: 2008-03-30
最后登录: 2017-09-26
0 楼:  发表于: 2008-04-03 09:47    发自: Web Page

[Tutorial] Cocoa Foundation: Hello Cocoa from Console   

管理提醒: 本帖被 cocoachinaadmin 设置为精华(2008-05-20)
为论坛建设添砖加瓦. @+p(%  
$- %um  
这里介绍一下怎么开发最简单的Cocoa程序,这个程序是在是太简单,因为如果你用Xcode的话,选用Cocoa Foundation Command Tool的话,应该不用写任何代码, 但是这里是为了向大家介绍一下,这个最简单的程序是如何通过gcc编译成功的,当然里面还有一个东西可以做一点解释. EN/t5d  
|7A}LA  
先看看源代码: =6=:OId  
#import <Foundation/Foundation.h> 's5rl  
sSGXd=":  
int main(int argc, char* argv[]) :wg=H  
{ 0#uB[N  
    NSLog(@"Hello Cocoa From Console"); ~&MDf pl  
    return 0; cjg~?R  
} olxxs(  
代码很简单,你可以用你喜欢的任何文本编辑工具来完成它, 源码文件名为hello.m, 这样简单的一个程序用xcode的话就太奢侈了. ln8NcAEx  
ok,下面来看看怎么编译这个程序, 打开终端, cd 到源文件所在的目录,然后执行下面的这个命令,就可以生成一个叫做hello的程序了. BV7P_!vt  
gcc -framework Foundation hello.m -o hello &)||~  
这里面需要解释的是 -framework 参数, 熟悉gcc的朋友可能知道,gcc中的-l参数其实是传递给ld命令的,是用于链接器工作的, mac下面的-framework和-l参数的效果是一样的,就是告诉ld编译后的目标文件在生成最终的执行文件的时候,要连接哪个framework, 因为mac的核心Darwin也是一个unix,所以在Mac下面-l参数也是被支持的. VMJaL}J]  
另外还有一点, gcc还可以接受-L来指定要连接的library在什么位置,这个选项一般用来连接第三方的库, 那么如果我想连接第三方的Framework的时候,我应该怎么做呢? -L /your/Framework? 不对, gcc针对这种情况使用了另外一个参数 -F, 所以如果你要连接第三方的framework, 比如/opt/Qt4/QtCore, 你应该像下面这样使用gcc. 'yA/sZ  
gcc -F/opt/Qt4 -framework QtCore qttest.cpp -o qttest :KXI@)M  
I''n1v?N  
好了,现在继续来解释上面那个程序里面的另一个问题,为什么字符串的前面多了个@符号呢?想必这个东西也困扰了不少人, 在obj-c里面@"string"这种模式在编译的时候会被编译器进行一个转换,生成一个NSString指针的实例,所以在需要NSString指针作为参数的地方,如果你不想明确的构造这个NSString指针, 那么用这种方法就最简单了,但是如果你将@"String"模式用在了需要c string的地方,就要出现错误了. h. ftl2>  
m]fUV8U  
好了, 下次继续吧.
[ 此贴被younker在2008-04-03 10:43重新编辑 ]

级别: 管理员

状态: 连续签到 - [3天]
UID: 2
精华: 9
发帖: 7689
可可豆: 73323 CB
威望: 73449 点
在线时间: 5514(时)
注册时间: 2008-03-29
最后登录: 2018-04-05
1 楼:  发表于: 2008-04-03 10:34    发自: Web Page
因为obj-c都是用指针操作的,用"字符串"这样表示的c string,明显compiler是不知道这个"字符串"的地址应该放在在哪里。前面加个at,那么@"字符串"的意思基本上是new一个叫做"字符串"的NSString,并且返回这个NSString的地址。 &zEBfr  
所以 hqjjd-S0  
:@-yK8q's  
NSLog("Hello Cocoa From Console"); n9J{f"`m  
这样就会出错, u'_}4qhCC;  
NSLog(@"Hello Cocoa From Console"); +s8R]3NJ_H  
这样就没问题。 C3f\E: D)  
Mb\(52`)Q  
这个是我的理解。不知道有没有更好的解释。
In all thy ways acknowledge Him, and He shall direct thy paths.
级别: 总版主

UID: 3
精华: 5
发帖: 198
可可豆: 183 CB
威望: 593 点
在线时间: 21(时)
注册时间: 2008-03-30
最后登录: 2017-09-26
2 楼:  发表于: 2008-04-03 10:43    发自: Web Page
引用
引用第1楼gagaga于2008-04-03 10:34发表的  : xYYa%PhIC  
因为obj-c都是用指针操作的,用"字符串"这样表示的c string,明显compiler是不知道这个"字符串"的地址应该放在在哪里。前面加个at,那么@"字符串"的意思基本上是new一个叫做"字符串"的NSString,并且返回这个NSString的地址。 0^u Ut-  
所以 "P(obk  
{R@V  
NSLog("Hello Cocoa From Console"); L2EQ 9i'[  
这样就会出错, R*lq7n9  
.......
+>!n qp  
YMK ![ q-  
修正了一下,多谢指正
级别: 新手上路
UID: 21
精华: 0
发帖: 5
可可豆: 5 CB
威望: 5 点
在线时间: 0(时)
注册时间: 2008-04-05
最后登录: 2008-04-08
3 楼:  发表于: 2008-04-05 19:11    发自: Web Page
呵呵,写得不错... ZM v\j|{8  
不太熟悉cocoa,学习!支持!
级别: 新手上路
UID: 8
精华: 0
发帖: 6
可可豆: 6 CB
威望: 6 点
在线时间: 0(时)
注册时间: 2008-04-01
最后登录: 2008-04-14
4 楼:  发表于: 2008-04-05 22:09    发自: Web Page
呵呵,最近刚开始看《Cocoa入门——使用Objective-C》,学习了
级别: 骑士

UID: 50
精华: 0
发帖: 317
可可豆: 1128 CB
威望: 1128 点
在线时间: 70(时)
注册时间: 2008-05-07
最后登录: 2013-10-11
5 楼:  发表于: 2008-07-24 17:12    发自: Web Page
Re:[Tutorial] Cocoa Foundation: Hello Cocoa f
又来温习一下,顺便收藏了
不骄不躁,锐意进取!
级别: 圣骑士
UID: 41925
精华: 0
发帖: 342
可可豆: 3420 CB
威望: 3420 点
在线时间: 289(时)
注册时间: 2010-12-09
最后登录: 2011-09-28
6 楼:  发表于: 2010-12-30 16:56    发自: Web Page
mark一下。。学习学习一
级别: 新手上路
状态: 连续签到 - [1天]
UID: 43228
精华: 0
发帖: 25
可可豆: 181 CB
威望: 183 点
在线时间: 326(时)
注册时间: 2010-12-18
最后登录: 2019-03-30
7 楼:  发表于: 2011-02-11 15:54    发自: Web Page
学习学习, 多谢!
级别: 骑士

状态: 连续签到 - [3天]
UID: 46714
精华: 0
发帖: 231
可可豆: 2245 CB
威望: 2231 点
在线时间: 531(时)
注册时间: 2011-01-13
最后登录: 2016-06-15
8 楼:  发表于: 2011-02-12 13:13    发自: Web Page
review!呵呵呵呵
生命中,不断地有人离开或进入。
于是,看见的,看不见的;记住的,遗忘了。
生命中,不断地有得到和失落。
于是,看不见的,看见了;遗忘的,记住了。
然而,看不见的,是不是就等于不存在?
记住的,是不是永远不会消失。
级别: 新手上路
UID: 51818
精华: 0
发帖: 3
可可豆: 30 CB
威望: 30 点
在线时间: 3(时)
注册时间: 2011-02-18
最后登录: 2011-04-14
9 楼:  发表于: 2011-02-18 10:30    发自: Web Page
路过 学习了
A:单位涨工资了,我的月薪能开到6万了,你呢?
B:我们也涨了不到7万把。
A:不错啊,还是你们待遇好。听说今晚超市大白菜打折才三千块一斤!
B:嘘小声点,别让别人听见

CocoaChina社区转载内容已尽可能注明出处,如未能核实来源或转发内容图片有权利瑕疵的,请及时联系社区进行修改或删除【联系方式QQ : 3442093904 邮箱:support@cocoachina.com】文章内容为作者独立观点,不代表CocoaChina社区立场。版权归原作者所有,如申请授权请联系作者,因文章侵权CocoaChina社区不承担任何法律及连带责任。

描述
快速回复

关注本帖(如果有新回复会站内信通知您)

发帖、回帖都会得到可观的积分奖励。查看论坛积分规则

按"Ctrl+Enter"直接提交
    顶部