1
我一直有一個很奇怪的問題。我有一個可變數組,聲稱是可變的,並聲稱對addObject:作出響應,但崩潰說它不可變。iOS - 可變陣列問題?
下面是代碼:
NSLog(@"Can add object: %d", [[MySingleton sharedInstance].myArray respondsToSelector:@selector(addObject:)]);
if([[MySingleton sharedInstance].myArray isKindOfClass:[NSMutableArray class]])[[MySingleton sharedInstance].myArray addObject:objectToAdd];
else NSLog(@"Not mutable");
現在,如果我將其設置爲可變的副本,它的工作原理。
NSLog(@"Can add object: %d", [[MySingleton sharedInstance].myArray respondsToSelector:@selector(addObject:)]);
if([[MySingleton sharedInstance].myArray isKindOfClass:[NSMutableArray class]])[[MySingleton sharedInstance].myArray.mutableCopy addObject:objectToAdd];
else NSLog(@"Not mutable");
這是爲什麼?它爲什麼聲稱是可變的,並且能夠添加對象:,但除非我使用可變副本,否則會崩潰?
http://stackoverflow.com/questions/1096772/is-it-safe-to-use-iskindofclass-against-an-nsstring-instance-to-determine-type – GendoIkari
哦。出於某種原因,我有兩個倒退。我認爲是MeMemberOfClass是不安全的。我只想知道它爲什麼說它響應選擇器。這不僅僅是爲了實例化,而不是類的類型? – RileyE
或者我必須要用戶instancesRespondToSelector:? – RileyE