2011-01-21 12 views
0

大きなnoobは物事を理解するのに役立ちます。登録レーン:NSMutableArray内に格納されたUIViewと対話する

私は私が見るのNSLogでNSMutableArrayの

lanes = [[NSMutableArray arrayWithCapacity:3] retain]; 

- (void)registerLane:(Lane*)lane { 
    NSLog (@"registering lane:%i",lane); 
    [lanes addObject:lane]; 
} 

の内側に格納されている3つのUIViews持っ89183264

をのNSLog(89183264)に表示される値は、私が後だものです。 コード内の別の場所でコードを再利用できるように、その番号を変数に保存したいと考えています。

私が思い付くことができ、最も近いこのだった:問題はdescription0は全体のUIViewオブジェクトを取得するだけではなく、単一の数字(12月89183264が進0x550d420である)ということである

NSString *lane0 = [lanes objectAtIndex:0]; 
NSString *description0 = [lane0 description]; 
NSLog (@"description0:%@",description0); 

description0のコンテンツ:

description0:<Lane: 0x550d420; frame = (127 0; 66 460); alpha = 0.5; opaque = NO; autoresize = RM+BM; tag = 2; layer = <CALayer: 0x550d350>> 

私は何を得ることはありませんが、私はそう簡単でのNSLogで正しい小数点値を取得する理由ですが、NSMuからそれを取得することができないように見えます他の方法ではtableArray。私はここでいくつかの「基本的な知識」が欠けていると確信しています。誰かが時間をとってここで何が起こっているのかを説明していただければ幸いです。長い一日を勉強しています。

私のようなもので簡単に89183264番号を保存することができない理由

:あなた私はあなたがビューのメモリ位置を保存したい理由としては本当に困惑しているすべての

答えて

1

に感謝

NSInteger * mylane = lane.id; 
or 
NSInteger * mylane = lane; 

?それはあなたの '89183264'の数字です。ポインタの位置です。電話をしているとき:

NSLog (@"registering lane:%i",lane); 

...実際に何が印刷されているのですか?印刷されている数字は何を意味していますか?

本当に悪い考えです。特にUIViewをサブクラス化している場合は、あなたが選択したintを割り当てることができる素敵な.tagプロパティが既に用意されています。

あなたは人生を無限に複雑にする必要があります。ちょうどポインタを使用してください。私がUIViewsの多くを含む配列を持っていると言う:あなたが何をしようとしてい

UIView *viewToCompare = [myArray objectAtIndex:3]; 
for (id object in myArray) { 
    if (object == viewToCompare) { 
     NSLog(@"Found it!"); 
    } 
} 

- など、私は

+0

と任意のint型の周りfaffing必要はありません - それは二つのポインタを比較何とかUIViewを識別しようとすると、後でコード内で同じものかどうかを比較します。私がNSLog(@ "レーンを登録しています:%i"、レーン)をします。私はNSLog出力で89183264を得ます。私には、それがどのUIViewであるかを示すユニークな数字です。私は.tagが割り当てられています。 .tag値を変数に保存するにはどうすればいいですか?それはメモリの場所の値より簡単ですか? – TrekOnTV2017

+0

上記の例で私の更新された回答をご覧ください – lxt

+0

ありがとうございます。私はそれに応じて自分のアプローチを再調整しています。 – TrekOnTV2017

関連する問題