objective-c - ios开发中self和下划线的区分
黄舟
黄舟 2017-04-27 09:02:53
0
3
876

今天碰到一个问题,就是用到懒加载的时候,我用了self,结果报错直接蹦了,

我们老师说这是self递归引用了,可我还是不明白它们之间的区别

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

모든 응답(3)
洪涛

self.x는 속성에 액세스하는 데 사용됩니다. 실제로는 getX 또는 setX 메서드에 액세스하지만 대부분의 경우 컴파일러는 자동으로 이 두 메서드를 구현하고 관련 인스턴스 변수를 자동으로 생성하므로 사용자는 이를 느끼지 못합니다. 도착하다. _x는 자동으로 생성된 인스턴스 변수입니다.
예를 들어 다음 속성을 정의합니다.

으아악

다음과 같은 숨겨진(단순화된) 코드가 많이 있습니다.

으아악

귀하의 지연 로딩 코드가 속성의 get 메소드를 오버로드한 것 같습니다. Self.x는 실제로 [self x] 메소드를 호출합니다. get 메소드에서 self.x를 사용하면 이 self.x가 [self를 호출합니다. x] 방법을 사용하면 무한 재귀입니다.

黄舟

참조하면 차이가 없습니다. 할당하면 차이가 있습니다. Self.xx=oo 먼저 xxretaincount -1을 넣은 다음 oo _XX 복사본을 직접 가리킵니다. oo. 유지 단계가 없습니다.

도 아니고
曾经蜡笔没有小新

나는 당신이 다음과 같을 것이라고 추측했습니다:

으아악

그러면 self.some을 호출하는 것은 [self some]을 사용하는 것과 동일하며, 일부에서는 self.some이 [self some]을 다시 호출하는 것과 같습니다. . . 루프가 형성됩니다. . .

밑줄은 설정 및 가져오기를 우회하여 직접 액세스를 의미합니다. .

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿