実は、問題は
@property (nonatomic, copy) NSMutableArray* arrayOfObjects;
あるべきです:
@property (nonatomic, strong) NSMutableArray* arrayOfObjects;
ええ?その人たちに感謝します!
このバグがどのように機能したかは正確にはわかりませんが、知りたいと思います:)
私は 1 時間以上前から 1 つの問題を解決しようとしています... 非常に単純なことではないかと思いますが、まだ理解できていません。これはメモリ管理に関するものであると推測していますが、これはまだ私の間違いなく弱点です。
「インスタンスに送信された認識されないセレクター」などに少し似た投稿 をします が、私の問題は解決しませんでした...
一言で言えば(多くの原因を貼り付けると、潜在的なバグがどこにあるのかわかりません):
@interface MyCustomObject : NSObject {
NSString* name;
int birthDate;
double heightInMeters;
}
@property(strong, nonatomic) NSString * name;
@property(nonatomic) int birthDay;
@property(nonatomic) double heightInMeters;
-(id)initWithDate:(int)birthDate
AndName:(NSString *)nameString
AndHeight:(double)h;
@end
/////////////////////////////////
#import "MyCustomObject.h"
@implementation MyCustomObject
@synthesize name;
@synthesize birthDay;
@synthesize heightInMeters;
-(id)initWithDate:(int)bd AndName:(NSString *)nameString AndHeight:(double)h{
if(self = [super init]){
self.birthDay = bd;
self.name = nameString;
self.heightInMeters = h;
return self;
}
return nil;
}
@end
そして、ある種のMyCustomObject
s のデータベース:
DataCollection.h:
@interface DataCollection : NSObject{
NSMutableArray* arrayOfObjects;
}
@property (nonatomic, copy) NSMutableArray* arrayOfObjects;
-(void)addElement:(id)el;
@end
そして実装:
#import "DataCollection.h"
@implementation DataCollection
@synthesize arrayOfObjects;
-(id)init{
if(self = [super init]){
self.arrayOfObjects = [[NSMutableArray array] init];
NSLog(@"Number of record before init: %d", [self.arrayOfObjects count]);
[self addElement:[[MyCustomObject alloc] initWithDate:1988 AndName:@"Georg" AndHeight:1.88]];
[self addElement:[[MyCustomObject alloc] initWithDate:1951 AndName:@"Sebastian" AndHeight:1.58]];
NSLog(@"Number of record before init: %d", [self.arrayOfObjects count]);
return self;
}
return nil;
}
-(void)addElement:(id)el{
// UNRECOGNIZED SELECTOR ????
[self.arrayOfObjects addObject:el];
}
@end
結果は次のとおりです。
2013-03-05 15:42:56.826 XMLTest[11787:207] 初期化前のレコード数: 0 現在の言語: 自動; 現在、objective-c 2013-03-05 15:43:51.446 XMLTest[11787:207] -[__NSArrayI addObject:]: 認識されないセレクターがインスタンス 0x6816110 に送信されました
私が間違っていることがわかりますか?これはメモリ管理に関するものだと思います