2014-04-10 26 views
0

我有一個class命名爲Letter。它有myId(長)屬性。 當我使用這個類,我想myId是這樣:唯一標識符(長)在目標c中

Letter *obj1 = [[Letter alloc] init] 
Letter *obj1 = [[Letter alloc] init] 
Letter *obj1 = [[Letter alloc] init] 

obj1.myId必須是1
obj2.myId必須爲2
obj3.myId必須是3

我曾嘗試這樣的:

@interface Letter : NSObject 

@property (atomic) long myId; 

- (instancetype)initWithId; 

@end 

@implementation Letter 

- (instancetype) initWithId 
{ 
    self = [super init]; 
    if (self != nil){ 
     _myId ++ ; 
    } 
    return self; 
} 
@end 

但它不工作。我怎樣才能做到這一點?

回答

2

使用static全局變量保持ID的軌跡:

@implementation Letter 

static long _id = 1; 

- (instancetype) init 
{ 
    self = [super init]; 
    if (self != nil){ 
     _myId = _id++; 
    } 
    return self; 
} 
@end 

(注意:我已刪除了贊成的普通老式initinitWithId方法)。

+0

如果我有'SequenceGenerator'類並且它具有名爲'next'的類方法。 '_myId = [SequenceGenerator next]'。我可以這樣嗎? –

+0

@AyubxonUbaydullayev我想,如果'SequenceGenerator'以類似的方式跟蹤id,但是這應該是你問題的一部分。 – trojanfoe

+0

非常感謝,我爲我的問題得到了答案 –