很多Objective C的教程,都沒能很好的講解面向對象編程中,定義函數,參數,我今天畫個圖給大家講一下。
方法實現的具體講解
首先,我們先定義個class 的interface, interface是一個抽象層,我們的class裡面有哪些方法,這裡全都可以看到。@interface 是定義抽象的開始,@end是定義結束
需要注意,在interface 定義,你可能會看到 号,和減号-, 加号表示,這是個靜态方法,不必要初始化實體,可以直接調用靜态方法;而➖ 号開始,表示這是一個類的字方法,你得初始化類實體,然後才能調用類的具體方法。
interface裡面的定義是怎樣的,@implementation 實現中的方法名,參數也是得一緻的,下面的示例代碼會展示的很清晰。interface和implementation是嚴格對應的。
具體業務實現代碼,是在@implementation 裡面寫代碼。
類的方法,可以沒有參數,也可以有多個參數。
類的方法,可以有返回結果,也可以不返回,不返回就是void
對于類的非靜态方法,你得先初始化,然後再使用它
SampleClass *sc = [[SampleClass alloc] init];
//定義一個變量,它的結果是調用計算方法之後獲得的return 結果
int result = [sc calcTwoNumer:4 withNumB:16];
本教程幫大家梳理Objective-c 最初級的面向對象的基礎編程原理。
最難的是理解函數定義,參數定義,以及傳參。
你理解了定義參數是怎麼定義的,調用函數就簡單了 【方法名 參數1 參數二】
中間是空格隔開。這就是Objective-C跟其他編程語言不一樣的設計。剛開始可能不太适應,但是你理解了它的玩法之後,看别人的Objective-C代碼也不難了。
其他的語法特點,跟C就沒什麼兩樣了。。
完整代碼如下:
//導入共用基礎類庫,類庫叫Foundation.h 這個每個應用都需要引入
#import <Foundation/Foundation.h>
//定義一個類 名為SampleClass,擴展NSObject對象
@interface SampleClass : NSObject
//這個類有一個方法定義
- (void)sampleMethod;
//定義一個方法,計算兩個int 參數的結果
- (int)calcTwoNumer: (int)a withNumB: (int)b;
@end
//實現上面的類的 interface
@implementation SampleClass
//實現SampleMethod方法的具體邏輯
- (void)sampleMethod {
//打印字符串到命令行
NSLog(@"I am test sampleMethod");
}
//計算方法的具體實現,注意,兩個參數,執行相加之後,return返回,也是一個int
- (int)calcTwoNumer:(int)a withNumB:(int)b {
return a b;
}
@end
//程序主函數入口
int main(int argc, const char *argv[]) {
//内存自動回收池的寫法,注意用{} 符号包裹的是程序的主體
@autoreleasepool {
// 下面是具體代碼,這兩行是打印兩行字符串
NSLog(@"What is my name");
NSLog(@"Hello, World!");
//初始化類,如果要實用類,你得先初始化,注意初始化對象的方法,先alloc,然後init
SampleClass *sc = [[SampleClass alloc] init];
//調用方法,其實是給目标對象發送消息,讓它知道要運行什麼方法
[sc sampleMethod];
//定義一個變量,它的結果是調用計算方法之後獲得的return 結果
int result = [sc calcTwoNumer:4 withNumB:16];
//打印我們最終的計算結果
NSLog(@"calc two number result: %d", result);
}
//如果沒有錯誤,程序返回exit code是0
return 0;
}
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!