2014-11-13 4 views
-4

콘솔의 배열에 대한 정보를 얻으 려하지만 NSLOg에 아무 것도 표시되지 않습니다. 이 클래스는 앱용 데이터를 저장합니다. 여기에 코드가 있습니다. NSLOG가 작동하지 않습니다.

#import <Foundation/Foundation.h> 
#import "DAObject.h" 

@interface DataModel : NSObject 

@property (strong, nonatomic) NSArray *array; 
@property (strong, nonatomic) NSArray *array2; 

@end 

하고 문제가있는하는 .m 파일

#import "DataModel.h" 
@implementation DataModel 

- (id)initWithCoder:(NSCoder *)decoder { 
    if (self = [super init]) {    
    } 
    return self; 
} 

- (NSArray *) _array 
{ 
    DAObject *obj1 = [[DACityObject alloc] init]; 
    obj1.name = @"Obj1"; 

    DACityObject *obj2 = [[DACityObject alloc] init]; 
    obj2.name = @"Obj2"; 

    _array = @[ obj1, obj2]; 

    for (int i = 0; i < [_array count]; i++) 
    { 
     NSLog(@"Item %d = %@", i, [_array objectAtIndex:i]); 
    } 

    return _array; 
} 

- (NSArray *) array2 {  
    _array2 = [[NSArray alloc] initWithObjects:@"icon1.png", @"icon2.png",@"icon3.png", nil]; 

    for (int i = 0; i < [_array2 count]; i++) { 
     NSLog(@"Item %d = %@", i, [_array2 objectAtIndex:i]); 
    } 
    return _array2; 
} 

@end 

에서

? 나는 그것을 이해할 수 없다.

+0

어디에서'_array' 메서드가 호출됩니까? 왜 '_ 배열'이라고 불리는가? 'array' 속성의 기본 getter 메소드를 오버라이드 (override)하려고 시도하고 있습니까? – trojanfoe

+0

두 개의 NSLog 문이 있습니다. 둘 다 결코 호출되지 않는 메서드 안에 있습니다. 어디에서나 _array 또는 _array2 메서드를 호출하고 있습니까? 또한 메소드는 밑줄이 아닌 문자로 시작해야합니다. – Fogmeister

+0

나는이 방법들을 한 번도 언급하지 않았다. 배열의 내용이 잘못되었는지 확인하고 싶습니다. 그렇게하는 방법? – Newbie

답변

0

로그를 볼 수있게되면 getter에서 아무 곳이나 액세스해야합니다. 예를 들어 AppDelegate.m에서 시도해보십시오.

#import "DataModel.h" 

@implementation AppDelegate 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    DataModel *data = [DataModel new]; 
    data.array; 
    data.array2; 
} 
+0

질문이 하나 더 있습니다. 응용 프로그램 대리인에서 "속성 액세스 결과가 사용되지 않음 - getters가 부작용으로 사용되어서는 안됩니다"라는 경고가 나타납니다. – Newbie

+0

예, 정상입니다. 우리가 반환 값을 사용하지 않기 때문에, 배열의 내용을 로깅하는 appdelegate에 루프를 포트 할 수 있습니다. – l0gg3r

+0

고마워요, 고맙습니다! – Newbie