0

さまざまな理由で、ペン先を使用してのみ実際に設定できるカスタムビューがいくつかあります。次に、これらのペン先を初期化するか、これらのペン先からビュー(オブジェクト)を作成します。以下のコードでこれを行うことは機能しますが、これらが生成されるときにどのinitメソッドが呼び出されるかはわかりません。drawRectメソッドを使用して、さまざまなセットアップを行う必要がありました。

NSArray *bundleL = [[NSBundle mainBundle] loadNibNamed:@"nibName" owner:self options:nil];
                    for (id object in bundleL) {
                        if ([object isKindOfClass:[MyClass class]]){
                            myObject = (MyClass *)object;
                        }
                    }

これまで私にとってうまくいかなかったのとはmyObject = (MyClass *)object;対照的に、「うまくいく」の違いは何ですか。myObject = [myClass alloc]initWithSomeMethod];

4

2 に答える 2

2

[[MyClass alloc] init]クラスの新しいインスタンスを返します。XIBファイルにあるものとは異なるオブジェクトです。myObject = object;単純なポインタ割り当てを実行するだけmyObjectobject、メモリ内のまったく同じオブジェクトを指します。

于 2013-02-16T09:28:28.133 に答える
1

もう少し調査を行うと、私がやりたいことを行うための適切な方法は次のとおりだと思います。

CustomView *aview = [[[NSBundle mainBundle] loadNibNamed:@"CustomXib" owner:self options:nil]objectAtIndex:0];
[self.view addSubview:aview];
于 2013-02-17T02:44:24.040 に答える