图解Windows下开发Objective-C程序之二 - Objective-C入门例子
??? 安裝完環境,完成了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);
??? 就輸出了正確的結果;
總結
以上是生活随笔為你收集整理的图解Windows下开发Objective-C程序之二 - Objective-C入门例子的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图解Windows下开发Objectiv
- 下一篇: 图解CS版的皮肤界面编程示例