2017-09-26 5 views
0

이 질문은 또한 클래스 메서드의 인수로 전달하는 것보다 클래스의 속성으로 전달하는 것이 더 나은 유형의 질문입니다.ObjectiveC 클래스 속성을 설정할 것으로 예상되는 경우?

@property (nonatomic) NSString *name; 
- (void)func; 

또는

- (void)funcWithName:(NSString*)name; 

모두 나에게 ObjC하여 유효한 디자인으로 보면 : 우리는 클래스의 name에서 작동하는 방법 func이있는 경우 는 예를 들어, 나는 여기에 두 가지 옵션이 있어요 . 그러나 func을 호출하기 전에 클래스 사용자가 name 속성을 설정해야한다는 것을 어떻게 알 수 있습니까? 이 속성을 적절하게 사용하지 않으면 사용 사례가 아닌 읽기 전용 속성에 대한 적절한 사용법입니까?

답변

1

사과를 오렌지와 비교하고 있습니다. 두 아키텍처는 서로 관련이 없습니다.

클래스가 어떤 이유로 name 속성을 필요로하는 경우
  • , 그것은 name 속성을 가져야한다.

  • 메서드에 전달 된 새 문자열이 필요한 경우 문자열 매개 변수가 있어야합니다.

+0

확실한가요? 여기서 두 점이 모두 참이고 클래스에 이름이 필요하며 메서드가 같은 이름으로 작동하는 경우에 대해 이야기하고 있습니다. – sramij

+1

물론 확실합니다. 내가 말하고있는 것은 당신이 두 가지 직각 사물을 혼동하고 있다는 것입니다. 이 메소드가 실제로 _property_라는 기존 이름에서 작동하면 이름 매개 변수가 될 수 있으므로 이름 매개 변수를 건네주는 것이 바보입니다. 메서드의 작업이 _set_ 이름 속성 _ 및 _ 그 작업을 수행하는 것이라면 물론 새로운 값을 전달하는 것이 좋습니다. – matt

+0

다음 우리는 첫 번째 지점으로 돌아 왔습니다. 이 메서드는 기존의 name 속성에서 작동하며 이름 매개 변수로 다른 문자열을 가지는 것은 바보 스럽다는 것에 동의합니다. 그럼,이 경우 (그리고 이것은 내 질문입니다),이 메서드를 호출하기 전에 이름 속성이 설정된다는 것을 누가 보증합니까? 그렇지 않으면 작동 할 것이 없습니다. – sramij