fb_license

技術標籤

@selector (1) 初使化區塊 (1) 物件 (1) 物件導向 (2) 型別 (4) 封裝 (1) 流程控制 (1) 陣列 (3) 推論型別 (2) 實機測試 (1) 蓋索林(gasolin) (1) 模組 (1) 憑證 (1) 轉型 (1) 羅康鴻 (121) 類別 (1) 變數 (5) Accelerometer (1) ActiveRecord (1) Activity (1) AFNetworking (1) alloc (1) Android (3) Animation (1) App (1) App ID (1) APP上傳 (1) ASP.NET (1) AVAudioPlayer (1) block (1) C# (2) class (1) CLLocationManager (1) CLLocationManagerDelegate (1) CMMotionManager (4) Controller (1) delegate (1) DELETE語法 (1) Device Motion資料 (1) Dialog (1) DropDownList (1) dynamic language (2) Facebook SDK (9) FBRequest (5) FBRequestConnection (2) FMDB (1) Gesture Recognizers (6) GROUP BY (2) Gyro (1) HAVING (1) IBAction (1) IBOutlet (1) id (3) inheritance (1) init (1) Insert (1) instance variable (1) Interface Builder (1) iOS (70) iOS idea (7) iOS Introduction (1) Layout (1) Magnetometer (1) Menu (2) Method (2) MKMapView (1) MKPointAnnotation (1) MS SQL (5) Nil (1) NSArray (1) NSDictionary (1) NSError (1) NSFileManager & .plist (1) NSMutableArray (1) NSMutableDictionary (1) NSNotificationCenter (1) NULL (1) object (2) Objective-C (16) Objective-C idea (1) ORDER BY (1) Parameter (1) property (1) protocol (2) Provisioning (1) Proximate Sensor (1) Q and A (2) R類別 (1) Rails (9) RESTful SOA (9) Ruby (8) Scene (1) SEELECT (1) Segue (2) SEL (1) SELECT語法 (1) Shake (1) Simulator (1) SOA (8) SQL (6) SQL Server (5) SQL函數 (1) SQL彙總函數 SQL (1) SQLite (1) Storyboard (1) Style (1) Swift (1) Table (1) target & action (1) Theme (1) Toast (1) TRUNCATE TABLE語法 (1) UIActionSheet (1) UIActionSheetDelegate (1) UIActivityIndicatorView (1) UIAlertView (1) UIBarButtonItem (1) UIButton (1) UICollectionView (1) UICollectionViewDataSource (1) UIControl (9) UIDatePicker (1) UIImage (1) UIImagePickerController (2) UIImagePickerControllerDelegate (2) UIImageView (1) UILabel (1) UILongPressGestureRecognizer (1) UINavigationController (2) UIPanGestureRecognizer (1) UIPinchGestureRecognizer (1) UIProgressView (1) UIResponder (1) UIRotationGestureRecognizer (1) UISegmentedControl (1) UISlider (1) UIStepper (1) UISwipeGestureRecognizer (1) UISwitch (1) UITabBarController (1) UITableView (1) UITableViewDataSource (1) UITapGestureRecognizer (1) UITextField (1) UITextFieldDelegate (1) UITextView (2) UITextViewDelegate (1) UIToolBar (1) UIView (8) UIWebView (1) UPDATE語法 (1) var (2) VB.NET (7) View (4) WHERE子句 (1) XML (1)

2014/02/24

[Objective-C] 參數化的訊息式操作... - Method & Parameter & "[]"


idea...



看來我透過訊息的傳遞,我就可以叫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