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