国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

淺析Objective-C的程序結構及面向對象的編程方式

2020-07-26 03:21:58
字體:
來源:轉載
供稿:網友

Objective-C程序的結構
就像學習所有編程語言一樣,第一個程序就是在屏幕打印出“Hello World !”。

我看的書上用到的編譯器還是比較老的,我現在用的是Xcode4.2.1,它有自動內存管理,所以書上的一些程序也許會報錯。可以在創建工程時不選擇Use Automatic Reference Counting選項解決這個問題。

運行Xcode,新建一個Command Line Tool工程,取名FirstProgram。

201642290837487.jpg (711×466)

在下一步,我們也取消Use Automatic Reference Counting選項。

不管自動生成的代碼是什么樣的,我們將代碼改成以下:

復制代碼 代碼如下:

//First Program Example
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    NSLog(@"Hello, World!");
    [pool drain];
    return 0;
}

運行,顯示如下:

201642290929362.png (411×55)
以下是對這段代碼的簡單說明:

1、程序第一行是注釋,跟C/C++/Java一樣,Objective-C注釋也可以用 //、/*??*/來實現。

2、#import <Foundation/Foundation.h>

告訴編譯器找到并處理名為Foundation的文件。

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

指定程序名稱為main,這是一個特殊名稱,表示程序開始的地方。

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

為自動釋放池在內存中保留了空間。

5、NSLog(@"Hello, World!");

指定要調用名為NSLog的例程。傳遞給NSLog的參數是字符串@"Hello, World!",它是一個NSString對象。

6、[pool drain];

用于釋放已分配的內存池,以及與程序相關聯的對象。

類、對象和方法
1、實例和方法

(1)使用類創建一個實例:

復制代碼 代碼如下:

yourCar = [Car new];

這里的Car是一個類,yourCar是一個對象

(2)對類和實例應用方法:

復制代碼 代碼如下:

[ClassOrInstance methed];

類或實例的名稱要緊跟“[”,“];”用于終止。這條語句相當于Java中的:對象名.方法名

再如:

復制代碼 代碼如下:

currentMileage = [yourCar currentOdometer];

其中,currentMileage用于接收返回值

2、一段詳細代碼及說明:

復制代碼 代碼如下:

#import <Foundation/Foundation.h>

//@interface section
@interface Fraction : NSObject {
    int numerator;
    int denominator;
}
-(void) print;
-(void) setNumerator: (int) n;
-(void) setDenominator: (int) d;
@end


復制代碼 代碼如下:

//@implementation section
@implementation Fraction
-(void) print {
    NSLog(@"%i/%i",numerator,denominator);
}
-(void) setNumerator:(int)n {
    numerator = n;
}
-(void) setDenominator:(int)d {
    denominator = d;
}
@end

復制代碼 代碼如下:

//program section
int main (int argc, const char * argv[])
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    Fraction *myFraction;
    myFraction = [Fraction alloc];
    myFraction = [myFraction init];
       
    [myFraction setNumerator: 1];
    [myFraction setDenominator: 3];
       
    NSLog(@"The value of myFraction is: ");
    [myFraction print];
    [muFraction release];
    [pool drain];
    return 0;
}

(1)第4行是聲明一個類的方法,@interface 新類名:父類名

(2)第8~10行定義了三個方法,其中“-”表示實例方法,“+”表示類方法。

實例方法總是可以訪問它的實例變量,而類方法卻不行,因為類方法只處理類本身,而不處理類的任何實例

(3)第31~32行可以合并成

復制代碼 代碼如下:

myFraction = [[Fraction alloc] init];

或者
復制代碼 代碼如下:

myFraction = [Fraction new];

(4)第39行用于為對象myFraction釋放內存,值得注意的是,最新的Xcode編譯器可以實現自動釋放內存

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阳东县| 合山市| 深州市| 南丰县| 长乐市| 眉山市| 阿拉善右旗| 台前县| 忻州市| 盈江县| 芮城县| 藁城市| 阿勒泰市| 乌鲁木齐县| 临西县| 冕宁县| 嘉兴市| 印江| 越西县| 平阳县| 布拖县| 清水县| 承德市| 诏安县| 永兴县| 虞城县| 都昌县| 柘城县| 吉林省| 昌黎县| 雅安市| 定陶县| 高安市| 特克斯县| 洱源县| 长海县| 格尔木市| 措美县| 平安县| 龙井市| 洛阳市|