클래스 메서드 노출에 관한 학문적 질문이 있습니다. 분명히 이것에 대해 이해하지 못하는 부분이 있으며 알고있는 사람들로부터 명확한 설명을 원합니다.클래스 메서드 노출 및 속성 정의
배경 : ViewController 및 ClassB라는 두 클래스의 간단한 예가 있습니다. 클래스 B에는 returnArray라는 메서드가있는 배열이 들어 있습니다. ViewController는 배열의 데이터에 액세스합니다. ClassB.h 파일에서 returnArray 메서드를 노출했습니다.
질문 : 속성을 정의하지 않고도 ViewController에서 배열의 데이터에 액세스 할 수있는 이유는 무엇입니까? 나는 그 속성이 배열에 접근 할 수 있도록 getter를 생성 할 것이라고 생각했다. 예제 (메서드 만 노출)를 사용하면 @property를 만들지 않고도 데이터에 액세스 할 수 있습니다.
클래스 방법 :
ClassB.h
@interface ClassB : UIViewController
+(NSArray *) returnArray;
//@property (nonatomic, strong) NSArray *returnArray;
ClassB.m
@implementation ClassB
+(NSArray *) returnArray
{
NSArray *locationArray = @[@"Place1", @"Place2"];
return locationArray;
}
ViewController.m
- (void)viewDidLoad
{
NSArray *location = [ClassB returnArray];
NSLog (@"The count of the location is %d", [location count]);
NSLog (@"The second item in testArray is %@", location[1]);
}
인스턴스 방법 : 그것은 읽기 가치가 있도록 검토 답변 후
ClassB.h
*/
{
@private
NSArray *returnArray;
}
- (void)setReturnArray:(NSArray*)returnArray;
-(NSArray *) returnArray;
*/
@property (nonatomic, strong) NSArray *returnArray;
@end
ClassB.m - no change
ViewController.h - no change
ViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
//Create instance of ClassB
ClassB *classB = [ClassB new];
//Access the instance of returnArray
NSArray *location = [classB returnArray];
NSLog (@"The count of the location is %d", [location count]);
NSLog (@"The second item in testArray is %@", location[1]);
}
귀하의 질문이 무엇인지 잘 모르겠습니다. 배열을 반환하는 클래스 메서드를 호출하고 배열을 가져 오는 중입니다. 부동산은 무엇과 관련이 있습니까? 속성은 클래스의 인스턴스에 대한 getter/setter 메서드의 줄임말입니다. – jrturton