4
@interface AClass : SomeType { 
@protected 
    NSMutableArray* amINotAlreadyProtected; //? 
} 

@protected@protected이 기본값 인 경우이 코드가 필요합니까? 이 코드는 매우 숙련 된 프로그래머가 작성했지만 나 자신을 생략 할 것입니다.@protected가 기본값 인 경우 왜이 ivar에 @protected가 필요합니까?

+0

'@ public','@ protected','@ private'은 프로퍼티가 손으로 코딩 된 시대의 것들이며 ('@ property' 지시어가 없습니다), iVar 액세스는 거의 보편적이었습니다 당신은 일을 끝내야했습니다. 그들은 애플 프레임 워크의 일부가 여전히 그것을 사용하기 때문에 그것들을 비난하는 것을 결코 잊지 못한다. – CodaFi

+0

@CodaFi OK. 정보 주셔서 감사합니다. –

+0

@ JoshCaswell 약 25 년의 경험을 가진 프로그래머가 자신의 수업에서이를 작성했기 때문에. 나는 그것을 생략했을 것이다. –

답변

5

기본 동작은 @protected이므로 필요 없음은 필요하지 않습니다.

그러나 일부 프로그래머는 경험이 부족한 프로그래머를 나중에 사용하는 경향이 있으며 나중에 알게됩니다. 또한 보호되고 다른 개인 또는 공개 변수가있는 경우 코드 가독성이 높아진다는 것을 언급 할 수 있습니다.

+0

답해 주셔서 감사합니다 –

+0

실제로 필요합니다. 또는이었다. – bbum

2

당신이 볼 수있는 경우 그것은 시대에서이다 :

기본이 @protected있는 동안 다른 변종 중 하나로 전환하고 싶었 더라면, 당신이 그것을 사용할 필요가있다
@interface Foo:Bar 
{ 
    @private 
    … ivars … 
    @protected 
    … ivars … 
} 
… 
@end 

다시 스위치. 그리고 예, ivar 선언 순서가 릴리즈마다 유지되도록하는 이유 (종종 나쁜 것)가있었습니다.

그 외에도, 기본 대소 문자에 대한 키워드를 포함하면 페티 처 그레이 비어드 (나 자신과 같은)가 해당 선언에서 정확하게 명시 될 수 있습니다.

그러나 최근에 추가 된 @property과 같은 헛소리는 더 이상 필요하지 않습니다.

+0

감사합니다. 예, 스위치가'@ protected'로 되돌려지지 않는 한,'@ private' 키워드를 따르는 모든 변수는 private이 될 것이라는 것을 알기 때문에 여러분이 여기서 발견 한'@ protected '가 필요할 것입니다. 내가 물어 본 질문에는 그 이전에'@ private'이나'@ public'이 없었기 때문에 그렇지 않았습니다. –

+0

현명한 회색 턱수염을 위해 .... – bbum