순전히 실수로 [bar.view addSubview:[foo view]]
을 호출하는 것이 작동하지 않지만 [bar.view addSubview:foo.view]
이 다음 코드에서 발생한다는 것을 발견했습니다. . 특히, 그들은 메시지가 표시되기 전에 인스턴스화되지 않은 경우 전송되는 UIWebView
메시지 - foo
가 실행하기 전에 설정해야 할 몇 가지 하위 뷰를 가지고 있기 때문에[foo view]가 내 코드에서 foo.view와 다르게 동작하는 이유는 무엇입니까?
foo=[fooViewController alloc] initWithNibName:@"fooViewController" andBundle:nil];
[self.view addSubview:foo.view];//here's where I swap the two commands out
[foo aFunctionThatSendsAMessageToOneOfFoosSubViews];
(그 마지막 줄은 nil
에가는 바람 foo
으로)
나는이 두 기능적으로 동일라고 생각 - foo.view
가하는 [foo view]
같은 게터를 호출하는,하지만 그렇지 않다 실제로는..; 괄호를 사용하면 메시지를 nil
으로 보내는 동안 도트 구문이 원하는 결과를 얻습니다.
10 분 전에 나 한테 물어 본 적이 있다면, 두 표현의 차이점은 '구문, 그 외에는 아무것도 없음'이라고 말했을 것입니다. 내가 분명히 틀렸다는 것을 감안할 때, 내가 틀렸던 지 이해할 필요가있다. 그렇지 않으면 다시 비틀 거려야한다.
'[foo view]'와'foo.view'의 실제 출력을 비교해 보았습니까? 그들은 반드시 같아야합니다. – Costique
사실, 그렇습니다. NSLog (@ "View Info : % @", [foo view])와 비슷한 foo.view 문을 사용했습니다. 동일하게 - 내가 반대로해도. 똑같은 것을 돌려주는 것처럼 보입니다. – RonLugge
Xcode의 도우미 편집기에서 코드를보고 턱시도 드롭 다운에서 "어셈블리"를 선택하면 도트 구문과 대괄호 사용간에 차이가 있습니까? –