質問

ビュー(画像)を初期化して:

Image *myImageView = [[Image alloc]init];
    myImageView.myId = randomImageNumber;
    [myImageView initWithImage:myImage];

画像クラスでは、ログ(log1)を実行し、以前に設定されたrandomimageNumberを取得します。その後、まったく同じクラスで、2番目のログ(log2)を実行します。なぜ私の2番目のログにもう値がないのですか?

ここで、クラス画像の実装ファイル:

@synthesize myId;
-(id) initWithImage: (UIImage *) anImage
{
    NSLog(@"LOG1%d",myId);
    if ((self = [super initWithImage:anImage]))
    {
        self.userInteractionEnabled = YES;
    }
    return self;
}

}
-(void)touchesBegan...
....
- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
  NSLog(@"LOG2%d",myId);
}

「Return Self」は、私がヘッダーファイルで宣言したMyIDを空にし、初期化に設定されました。どうすればそれを防ぐことができますか?

私のheaderfileは次のようになります:

@interface Image : UIImageView 
{
   int myId;
}
@property (assign) int myId;

@end
役に立ちましたか?

解決

あなたのコードにカップルのもの。オブジェクトにイニシを2回以上呼び出すことはありません。これは、オブジェクトを台無しにするだけです。

これに変更してください:

Image *myImageView = [[Image alloc] initWithImage:myImage];
myImageView.myId = randomImageNumber;

デフォルトでは、のサブクラスを初期化するときに、それがあなたの問題です NSObject, 、すべてのプロパティが設定されています 0 (また nil それらがポインターである場合)。

デフォルト値が必要な場合 myId 次に、これを行います:

// Image.m

@implementation

// other code

-(id) initWithImage:(UIImage *) image
{
    if (self = [super initWithImage:image])
    {
         self.myId = randomImageNumber;
    }

    return self;
}

// other code

@end

他のヒント

私はそれを見つけたと思います:

https://www.google.com/maps/place/variable/@53.626739,10.025728,17z/data =!3m1!4b1!4m2 !3m1!

この変数があなたのものかどうかを確認できますか?

Besties Phil

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top