您的位置:首页 > 移动开发 > Objective-C

图解Windows下开发Objective-C程序之二 - Objective-C入门例子

2015-03-12 13:12 330 查看
安装完环境,完成了Hello World例子之后,来看一些实例。

一 输出语句的例子

敲入如下语句,

#import <Foundation/Foundation.h>

int main (int argc, const char *argv[])

{

NSLog (@"%d and %d and %@",100, 100, "qbs");

NSLog (@"%d and %d and %@",25, 75, "begz");

return 0;

}

然后运行,出错了;如下图;





原因是字符串前面要加@,@"字符串",和标准C略有差别;加上@后就正确了,如下图;





下图的工具栏中,小齿轮是build,绿色三角是Run,再后面是Build and Run,右边的红色三角是Debug;每次保存文件后应Build再Run,或点Build and Run;如果直接Run,运行的是上一次Build的结果;





二 布尔类型变量的例子

代码如下;

#import <Foundation/Foundation.h>

BOOL areIntsDiff (int t1, int t2)

{

if (t1 == t2) {

return (NO);

} else {

return (YES);

}

}

NSString *boolString (BOOL yesNo)

{

if (yesNo == NO) {

return (@"NO");

} else {

return (@"YES");

}

}

int main (int argc, const char *argv[])

{

BOOL areDiff;

areDiff = areIntsDiff (100, 100);

NSLog (@"are %d and %d different? %@",

100, 100, boolString(areDiff));

areDiff = areIntsDiff (25, 75);

NSLog (@"are %d and %d different? %@",

25, 75, boolString(areDiff));

return (0);

} // main

第一个函数比较两个整数是否相等;第二个函数根据传入的是OC的YES还是NO,返回字符串的"YES"或"NO";

BOOL类型定义在Objective-C中用来持有一个布尔值,定义为YES和NO; 而非TRUE和FALSE;

运行结果如下;





三 循环语句

代码如下;

#import <Foundation/Foundation.h>

int main (int argc, const char *argv[])

{

NSLog (@"The numbers from 1 to 6:");



int i;

for (i = 1; i <= 6; i++) {

NSLog (@"%d\n", i);

}



return (0);



} // main

循环语句跟标准C差不多;运行结果如下图;





四 做一个九九乘法表

在标准C的典型例子中,有一个输出九九乘法表的例子;编写如下代码;

int main (int argc, const char *argv[])

{

NSLog (@"Nine Nine Multiplication table:");

int x,y,z;

for(x=1;x<=9;x++)

{

for(y=1;y<=x;y++)

{

z=x*y;

NSLog (@"%d*%d=%d ",y,x,z);

}

NSLog (@"\n");

}

return (0);

}



运行,输出结果都正确,但是没有像标准C的例子一样整个乘法表排成三角形;如下图;





原来NSLog每次输出自动换到下一行,NSLog默认输出是带时间、进程名、换行等其他额外信息的;要不换行需要自己实现一个Log函数。



五 操作一下字符串

代码如下;

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[])

{

const char *words[4] = { "乔布斯", "比尔盖兹",

"克林顿", "小布什" };

int wordCount = 4;

int i;

for (i = 0; i < wordCount; i++) {

NSLog (@"%s is %d characters long",

words[i], strlen(words[i]));

}

return (0);

}

定义一个包含四个字符串的数组;运行,结果如下图;





六 Objective-C的类的初步实现

代码如下;

#import <Foundation/Foundation.h>

@interface student :NSObject

{

@public int grade;

NSString *name;

}

-(void)print;

-(void) setName:(NSString *)nn;

@end

@implementation student

-(void)print

{

NSLog(@"我叫 %@ ,我 %d 年纪了",name,grade);

}

-(void) setName:(NSString *)n

{

name=n;

}

@end

int main(int argc, const char * argv[])

{

NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

student *student1 = [student new];

student1->grade=5;

[student1 setName:@"乔布斯"];

[student1 print];

[pool drain];

return 0;

}

定义一个类student,并实现它的两个函数print和setName;

OC下类的创建分为两个部分,一个是类的声明(@interface),一个是类的实现(@implementation);

name是一个对象,如果在NSLog中输出控制符写为输出字符串的%s,

NSLog(@"我叫 %s ,我 %d 年纪了",name,grade);

出现下图的错误,名字没有正确显示;





改为如下;

NSLog(@"我叫 %@ ,我 %d 年纪了",name,grade);

就输出了正确的结果;

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: