2016-01-13 102 views
0

簡單的問題,但我不明白。 我在myTableView.h填充NSMutableArray不起作用

限定的

@property NSMutableArray* Checkmarks; 

和myTableView.m @synthesize它以我的表視圖我在viewDidLoad中()在與didSelectRowAtIndexPath方法

Checkmarks = [[NSMutableArray alloc] init]; 

分配它的陣列填充與

[Checkmarks addObject:myObject]; 

但我的日誌說t帽子Checkmarks是空的,雖然myObject不是。

這隻發生在iOS9中,但我不知道是什麼原因造成這種情況或發生了什麼變化。

請幫助:)

+1

是選中標記_empty_還是_nil_?不應該是'self.Checkmarks'? –

+0

發佈您的完整代碼,以便我們可以更好地瞭解發生的事情。另外,你是否真的需要'@ synthesize'語句? – keithbhunter

+0

'Checkmarks'不爲空 – TomWayne

回答

3

首先你不需要合成的,你只需要它,當你提供一個自定義的setter和getter,似乎不是你的情況。

其次,你應該與外顯記憶所有權聲明的性質,因此,你應該有:

@property (strong, nonatomic) NSMutableArray *checkmarks; 

當您刪除合成,你可以做_checkmarks ADDOBJECT或[self.checkmarks ADDOBJECT:myObject的。

然後嘗試在您的addObject之前和之後打印您的複選標記。複選標記必須在addObject之前打印一個空數組,然後必須擁有該對象。請注意,空數組與nil不同。

2

由於Checkmarks爲零,這意味着你的alloc/init沒有按照你的預期工作。

你viewDidLoad中應該是這個樣子:

-(void)viewDidLoad { 
    [super viewDidLoad]; 
    self.Checkmark = [[NSMutableArray alloc] init]; 
} 

這應該是一個UIViewController(包括一個UITableViewController)和在一個UITableView。

(另外值得注意:按照慣例,屬性以小寫字母開頭,並且,作爲Tiago說,你應該明確你的所有權,但我覺得默認的意思是這不是你的問題在這裏)

+0

是的,默認情況下它現在很強大,至少上次我看到它,但我總是建議顯式所有權這很容易做,並不是每個人都知道默認的xD –