:CustomButton•NSObjectカスタムサブクラスへのポインタをNSMutableArrayに追加する方法は? ViewController.mから次のコードスニペットについて
- (IBAction)buttonAction:(id)sender
{
CustomButton *button = (CustomButton *)sender;
button.associatedObject = [self.sourceOfObjects.objectArray lastObject];
[self.foo.arrayOfObjects addObject:button.associatedObject]; // this does not work?
}
はUIButtonのサブクラスであり、@propertyタイプNSObjectののオブジェクトへのポインタである(非アトミック強い)associatedObjectを有しています。
•sourceOfObjectsは、NSObjectのサブクラスであるMyCustomObject型のselfの@property(非構造体、強)です。
•objectArrayは、NSMutableArray型のsourceOfObjectsの@property(非構造体、強)です。
•fooはNSObjectのサブクラスであるMyCustomObject型のViewControllerの@property(非構造体、強)です。
•arrayOfObjectsはNSMutableArray型のfooの@property(非構造体、強)です。
質問:なぜ私はbutton.associatedObjectからのポインタをself.foo.arrayOfObjectsに追加できないので、button.associatedObjectと同じオブジェクトを指しているself.foo.arrayOfObjectsのポインタを持っていますか?
私はそれに続いて[self.foo.arrayOfObjects lastObject]を要求すると、button.associatedObjectも指すオブジェクトを返す必要があります。
実際に起こっていること:その後、self.foo.arrayOfObjects.countを要求すると、0が返されます。レイアウト時のインスタンス化があるため、arrayOfObjectsの初期化に関する問題ではないと思います。
私はこの質問を正確に表現して、正確であるようにしたいと考えています。 :)
「うまくいかない」と正確にはどういう意味ですか? (1)あなたが何が起こると予想されるか、(2)実際に何が起こったかを説明してください。 –
編集ありがとう。 –
「NSLog(@ "foo:%@"、self.foo.arrayOfObjects); and NSLog(@ "sourceOfObjects:%@"、self.sourceOfObjects.objectArray); 'メソッドの先頭にそれは無しではないことを確かめてください。あなたは「初期化の問題だとは思わない」ので、これが機能するはずなので、私たちは確かにしないでください。 :) – lnafziger