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] 點"."出物件資訊 - "." & @property



idea...



iPad上的UDID出場後就不會改變的,我設計的iPad物件要如何作到這樣的需求呢?
我是類別class,
透過@property即可讓您的UDID變成唯讀,
出廠後即可讀取不能變更。

我是物件Object,
而後您只要透過點"."的方式即可存取UDID屬性了。



1. 建立iPad類別
  • 新增Objective-C class檔案,取名為iPad
2. 宣告iPad屬性
  • 透過@property分別宣告UDID(裝置識別碼)、Type(機型)、Capacity(容量)等3個iPad資訊
  • 其中UDID使用readonly修飾詞,表示唯讀不可變更,只確保iPad的UDID資訊在出廠不可被變更
#import <Foundation/Foundation.h> @interface iPad : NSObject //透過@property建立UDID屬性, //透過readonly修飾詞, //讓UDID不可被修改,以確保iPad出廠後即不可被變更 @property (readonly) NSString * UDID; //透過@property建立Type與Capacity屬性, //此時使用readwrite修飾詞, //表示Type與Capacity屬性可被變更。 @property (readwrite) NSString * Type; @property (readwrite) NSInteger Capacity; @end

3. 合成屬性
  • 透過@synthesize,將屬性與實體變數合成,實際透過實體變數來保存資料

#import "iPad.h" @implementation iPad //透過@synthesize將UDID屬性與實體變數合成, //如此UDID屬性就會以_UDID實體變數作為資料存放的地方 @synthesize UDID = _UDID; //同樣的合成Type與Capacity @synthesize Type = _Type; @synthesize Capacity = _Capacity; - (id)init { self = [super init]; if (self != nil) { //透過NSUUID隨機產生代碼 NSUUID *UUID = [NSUUID UUID]; NSString* stringUUID = [UUID UUIDString]; //並設定實體變數_UDID的值 _UDID = stringUUID; return self; } return nil; } @end

4. 透過"."存取屬性
  • 透過"."即可存取iPad物件的屬性,而"."有表示"的"的意思
  • 其中的UDID是唯讀的,確保了iPAD的UDID在出廠後不可變更
#import <Foundation/Foundation.h> #import "iPad.h" int main(int argc, const char * argv[]) { @autoreleasepool { iPad * pad1 = [[iPad alloc] init]; pad1.Type = @"iPad Air"; pad1.Capacity = 16; NSLog(@"%@", pad1.UDID); //這行程式是不被充許的, //因為透過屬性唯讀的保護, //UDID確定在出廠後就不可被改變。 //pad1.UDID = @"abc123-111-111-111"; } return 0; }



檔案連結:objective_c_property.zip