Dizilerden oluşan bir dizi (States) oluşturmaya çalışıyorum. Benim Şehir diziye bir öğe eklemek çalıştığınızda zaman bu hatayı alıyorum şu şekildedir:NSMutableArray addObject, tanınmayan seçici
'NSInvalidArgumentException', reason: '*** +[NSMutableArray addObject:]: unrecognized selector sent to class 0x303097a0
Benim kodudur. Ben hala iyi hepsini anlamıyorum olarak bazı Bellek Yönetimi sorun var eminim
[currentCities addObject:city];
olduğu üzerinde çizgi hatalarını He got. Birinin benim hatamı açıklamasını umuyordum.
if (sqlite3_prepare_v2(db, sql, -1, &statement, NULL) == SQLITE_OK){
// We need to keep track of the state we are on
NSString *state = @"none";
NSMutableArray *currentCities = [NSMutableArray alloc];
// We "step" through the results - once for each row
while (sqlite3_step(statement) == SQLITE_ROW){
// The second parameter indicates the column index into the result set.
int primaryKey = sqlite3_column_int(statement, 0);
City *city = [[City alloc] initWithPrimaryKey:primaryKey database:db];
if (![state isEqualToString:city.state])
{
// We switched states
state = [[NSString alloc] initWithString:city.state];
// Add the old array to the states array
[self.states addObject:currentCities];
// set up a new cities array
currentCities = [NSMutableArray init];
}
[currentCities addObject:city];
[city release];
}
}
için
değiştirmek zorunda kaldı (ki yapmamalıdın, ancak bunu yaparsanız), bu 'okumak currentCities = gerekiyor [currentCities init ] '. NSArray başlatıcıları asla alıcıyı geri döndürmez ve hiçbir sınıfın başlatıcısı bunu garanti etmez. – Chuck
[currentCities init] nedenim; satır, bir sonraki duruma geçtiğimizde yeni bir örneği başlatması gerekeceği içindir. Bu satırı değiştirmek bu sorunu giderdi, ancak başka bir sorunla karşılaştı, ancak bahsettiğiniz ikinci adımı eklediğinizde ([[NSMutableArray alloc] init]) bu sorunu giderdik. Teşekkür ederiz. –
Yeni bir örnek başlatıyorsanız, yeni bir örnek de ayırmalısınız. – Wevah