看來我透過訊息的傳遞,我就可以叫iPad作一些事了,那現在我想要叫iPad播放影片,同時指定是否全螢幕顯示,並指定音量,這要如何作到?! |
我是類別class, 您可以在方法中定義是否全螢幕與指定音量的參數。 |
我是物件Object, 而後透過中括號"[]", 並指定是否全螢幕顯示與音量參數的值, 即可在播放時指定是否全螢幕顯示與音量。 |
1. 建立iPad類別
- 新增Objective-C class檔案,取名為iPad
2. 宣告播放影片方法
- 在.h檔中,宣告方法-(void)playVideoWithVolume:(NSInteger) volume inFullScreen:(NSInteger) isFullScreen;
- 在object-c中,一個冒號":"帶表一個參數,在此我們宣告2個參數,一個是表示音量,一個表示是否全螢幕
- 音量 => :(NSInteger) volume,而參數其實就像變數一樣,會用來接收傳入的資料,因此volume參數前方也會有一個小括號"()"來描述參數可接收資料的型別
- 是否全螢幕 => :(NSInteger) isFullScreen,同樣的參數isFullScreen前面有個小括號"()"來描述參數可接收資料的型別
- 特別的是從第2個參數起,您可以在冒號":"之前為這一個參數取一個前置名稱,以描述這個參數的用途,如此在透過中括號"[]"傳送訊息時,會更有程式可讀性,就如同在說一段話的感覺
- 那第1個參數有沒有前置名稱可用啊? 沒有,因此您可將所要描述第1個參數的文字與方法名稱放在一起,如同我們的方法名稱一樣playVideoWithVolume
#import <Foundation/Foundation.h>
@interface iPad : NSObject
//略過一些程式
//宣告播放影片的方法
//其中有2個參數volume與isFullScreen
-(void)playVideoWithVolume:(NSInteger) volume
inFullScreen:(NSInteger) isFullScreen;
@end
3. 實作播放影片方法
- 同樣的,在.m檔中,於-(void)playVideoWithVolume:(NSInteger) volume inFullScreen:(NSInteger) isFullScreen方法後加上大括號,以實作方法
#import "iPad.h"
@implementation iPad
//略過一些程式
//實作playVideoWithVolume::方法,
//在playVideoWithVolume::方法後面加上 {}大括號,
//並於大括號中以程式描述開關機要作的事。
-(void)playVideoWithVolume:(NSInteger) volume
inFullScreen:(NSInteger) isFullScreen
{
if(isFullScreen == 1)
{
NSLog(@"以音量%i和全螢幕的方式播放影片", volume);
}
else
{
NSLog(@"以音量%i和非全螢幕的方式播放影片", volume);
}
}
@end
4. 透過中括號"[]"傳送播放影片的訊息
- 除了透過中括號"[]"傳送方法名稱,然後加上冒號":"傳入參數值
- 第2個參數因為有加上前置名稱,因此要先寫下前置名稱後,在透過冒號":"傳入參數值
#import "iPad.h"
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
iPad * pad1 = [[iPad alloc] init];
pad1.Type = @"iPad Air";
pad1.Capacity = 16;
//除了透過中括號"[]"傳送方法名稱,然後加上冒號":"傳入參數值
//第2個參數因為有加上前置名稱,因此要先寫下前置名稱後,在透過冒號":"傳入參數值
//在此即表示播放影片時,把音量調到時,並以全螢幕(inFullScreen=1)的方式呈現
[pad1 playVideoWithVolume:10 inFullScreen:1];
}
return 0;
}
檔案連結:objective_c_method_parameter.zip