2011-06-12 5 views
0

페이지 당 1 개 이상의 질문을 게시하는 것이 규칙에 위배되지 않기를 바랍니다.코딩 품질 향상에 대한 질문 수가 많습니다.

  1. 필자는 value2 값에 따라 값 1이 변경됩니다. 그리고 그 때문에, 내가 value2를 변경할 때마다, 나는 [self changeValue1]로 간 다음 value2를보고 value1을 변경하는 코드를 실행합니다. 이 작업을 수행하는 자동화 된 방법이 있습니까? value2가 변경되고 해당 메서드가 호출 될 때 앱에 알릴 수 있습니까?

  2. 나는 그 클래스 외부에서 액세스하고 싶지 않은 메소드 (예 : 위와 같은 메소드)가 있습니다. 방법을 비공개로 설정하려면 어떻게해야합니까?

+0

저에게 델리게이트의 작품처럼 들립니다. – PengOne

+1

다음 번에 한 가지 질문 만하는 것이 좋습니다. –

답변

2

광고 1. 문서에서 주요 값 관찰을 찾으십시오.

ad 2. 개인 범주에 메서드를 정의하십시오. 이것은 다른 클래스가 더 이상 메서드를 호출 할 수 없다는 것을 의미하지는 않지만 적어도 컴파일러가 경고합니다.

@interface MySubclass() 

- (void)myPrivateMethod; 

@end 

@implementation MySubclass 

etc. etc. 
1

이 질문 하나를 들어, 키 값 관측을 볼 수 있습니다 : 당신의 MySubclass.m에서

http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/KeyValueObserving/KeyValueObserving.html

질문이 들어, 상단에있는 클래스의 확장을 추가 할 수 있습니다 .m 파일에 추가 할 메서드가 있습니다.

@interface MyClass() 

-(void) _myPrivateMethod; 

@end 
+0

처음에는 _을 쓰는 것과없는 것의 차이점은 무엇입니까? – Andrew

+0

이 메서드가 private 인 것을 아는 것은 단지 명명법입니다. – AmineG

+1

밑줄로 시작하는 메서드 (및 변수) 이름은 Apple이 보유합니다. 무엇이든 그것이 후행 밑줄을 만들지 만, 나는 일반적으로 이것을 필요로하지 않습니다. 메서드가 전용 범주에서만 정의된다는 사실은 그 의도를 충분히 명확하게 만듭니다. –

관련 문제