2011-01-21 3 views
0

큰 멍청한 것들을 이해하는 데 도움이 필요합니다. NSMutableArray 내부에 저장된 UIView와 상호 작용

나는 내가 보는 NSLog에있는 NSMutableArray

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

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

내부에 저장된 세 UIViews 있습니다 등록 차선 : 89183264

NSLog (89183264)에 표시되는 값이 난 후 나는 것입니다. 코드의 다른 부분에서 다시 사용할 수 있도록 변수에 해당 번호를 저장하고 싶습니다.

내가했다 가지고 올 수있는 가장 가까운이 :

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

문제는 description0 전체 UIView의 개체 만이 아니라 하나의 숫자 (DEC 89183264 16 진수 0x550d420입니다)

description0의 내용을 얻을 수있다 : 나는 그렇게 쉽게 NSLog와 함께 올바른 진수 값을 얻을 수 있지만, NSMu에서 그것을 얻을 수없는 것 같다 이유

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

내가 무엇을하지 않는 것은 다른 방법으로 tableArray. 나는 여기에 "기본 지식"이 부족하다는 것을 확신하며, 누군가가 시간을 들여 여기에서 무슨 일이 일어나고 있는지 설명 할 수 있다면 고맙겠습니다. 그래서 마침내 나아갈 수 있습니다. 공부하는 것이 긴 하루였습니다.

내가 좋아하는 뭔가 쉽게 89183264 번호를 저장 할 수없는 이유

:

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

여러분 모두 감사합니다

답변

1

당신이보기의 메모리 위치를 저장할 왜에 관해서는 정말 혼란 스러워요 ? 그것이 당신의 '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