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/23

[Objective-C] 訊息式的操作... - Method & "[]"


idea...



iPad有開關機的功能,這功能我要如何設計?!
我是類別class,
您可以在類別中定義開關機的方法。

我是物件Object,
而後透過中括號"[]"傳送開關機的訊息,
讓iPad進行開關機即可。




1. 建立iPad類別
  • 新增Objective-C class檔案,取名為iPad
2. 宣告開關機onOff方法
  • 於.h檔中宣告開關機的方法 - onOff,宣告一個基本的方法基本上分三段:
    • 存取層級:在此為 "-",表示為物件層級下存取的方法,即需先透過物件存取
    • 回傳值:以小括號 () 表示,在此放入void,表示不傳回任何東西
    • 方法名稱:在此為onOff
  • 最後以分號";"作為結束
#import <Foundation/Foundation.h> @interface iPad : NSObject @property (readonly) NSString * UDID; @property (readwrite) NSString * Type; @property (readwrite) NSInteger Capacity; //宣告開關機方法onOff, // - 表示存取的層級是物件層級的方法,只有在建立物件後才可使用 // (void) 小括號中放void,表示不需回傳值 // onOff為方法名稱 // 加上;分號,表示宣告結束 -(void)onOff; @end

3. 實作開關機onOff方法
  • 於.m檔中實作onOff方法,在onOff方法後面加上 {}大括號,並於大括號中以程式描述開關機要作的事
  • 注意,在此預先宣告_isOn,實體變數,用以表示目前開關機的狀態
#import "iPad.h" @implementation iPad { //用以表示現在開關機的狀態, //0表示已關機, //1表示已開機 NSInteger _isOn; } @synthesize UDID = _UDID; @synthesize Type = _Type; @synthesize Capacity = _Capacity; - (id)init { self = [super init]; if (self != nil) { NSUUID *UUID = [NSUUID UUID]; NSString* stringUUID = [UUID UUIDString]; _UDID = stringUUID; //預設為0,表示關機 _isOn = 0; return self; } return nil; } //實作onOff方法, //在onOff方法後面加上 {}大括號, //並於大括號中以程式描述開關機要作的事。 -(void)onOff { //關機中 if(_isOn == 0) { //進行開機動作 _isOn = 1; NSLog(@"開機!"); } else { //進行關機動作 _isOn = 0; NSLog(@"關機!"); } } @end

4. 透過中括號"[]"傳送開關機的訊息 - onOff
  • 最後只需要透過中括號傳送開關機的訊息,就可叫iPad進行開關機的動作
#import "iPad.h" #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { iPad * ipad1 = [[iPad alloc] init]; ipad1.Type = @"iPad Air"; ipad1.Capacity = 16; //預設為關機,因此這時會開機 [ipad1 onOff]; //已開機,此時會關機 [ipad1 onOff]; } return 0; }



檔案連結:objective_c_method.zip

方法存取層級:
  • - :必須先建立實體物件,才能透過中括號"[]"傳送訊息給物件來執行方法
  • + :不需建立實體物件,可直接透過中括號"[]"傳送訊息給類別來執行方法
回傳值:
  • 方法在執行完後可以回傳資料,而回傳資料也是需要宣告可以回傳資料的型別,因此也會透過小括號"()"來宣告型別,而後在實作方法時,透過return將資料回傳,如下範例:
iPad.h @interface iPad : NSObject -(NSString*)getPhoneNumber; @end
iPad.m #import "iPad.h" @implementation iPad -(NSString*)getPhoneNumber { return @"0925555111"; } @end