iOS アプリケーション全体で、次のタイプのオブジェクト参照コピー機能を使用しています。
例えばobjectA = objectB;
objectA に対して操作/変更を実行すると、objectB に自動的に反映されます。objectB の変更を反映するために、objectA を objectB に再度コピーする必要はありません。同じ場所 (アドレス) を指している/参照しているためです。
問題は、iOS 8.2 までは問題なく動作していましたが、iOS 8.3 ではまったく動作しないようです。
以下は、正しく機能しないコード スニペットの 1 つです。
NSMutableDictionary *fieldObj = self.theData[indexPath.section ][indexPath.row];
// Adding text to data array
[fieldObj setObject:textField.text.stringByStrippingHTML forKey:@"value"];
NSLog(@"Line 1 \n%@",fieldObj);
NSLog(@"Line 2 \n%@",self.theData[indexPath.section][indexPath.row]);
上記のコードの 1 行目と 2 行目は、iOS 8.2 まで同じ出力を提供しています。
Line 1
{
name = Name;
required = NO;
type = 4;
value = asdfasdfasdfasdfsad;
}
Line 2
{
name = Name;
required = NO;
type = 4;
value = asdfasdfasdfasdfsad;
}
ただし、iOS 8.3 では、異なる出力を提供しています。
Line 1
{
name = Name;
required = NO;
type = 4;
value = asdfasdfasdfasdfsad;
}
Line 2
{
name = Name;
required = NO;
type = 4;
value = "";
}
私はここで何か悪いことをしていますか?
そうでない場合は、問題とその解決方法を知っている人はいますか?
編集: 上記の誤解を招く質問で申し訳ありません。上記の問題の背後にある理由は、indexPathForItemAtPoint:(CGPoint) が iOS 8.3 でのみ間違った indexPath を返すことです。
The code I have used is as follow:
// retrieve indexpath from uitextfield
CGPoint pos = [textField convertPoint:CGPointZero toView:self.collectionView];
NSIndexPath *indexPath = [self.collectionView indexPathForItemAtPoint:pos];
上記のコードは、iOS バージョン 8.2 まで正常に動作しています。