2015-02-27 3 views
0

Matrix.h код:Xcode Objective-C SKNode свойство является нулевым после создания экземпляра

#import <Foundation/Foundation.h> 
@interface Matrix : NSObject 
+(id)matrix; 
@property SKNode *window; 
@end 

Matrix.m Код:

#import "Matrix.h" 

@implementation Matrix 

+(id)matrix 
{ 
    Matrix *matrix; 
    matrix.window = [SKNode node]; 

    if(matrix.window == NULL) 
    { 
     NSLog(@"matrix.window is NULL"); 
    } 
    return matrix; 
} 

Код выше для объекта Matrix. В конструкторе он создает свойство SKNode и затем использует if-statement для проверки, является ли он нулевым.

После инстанцирования Матрицы объект журнал отладки:

2015-02-27 20:11:51.597 
test[4165:415758] matrix.window is NULL 

Когда код работает, если заявление всегда срабатывают. Может кто-нибудь объяснить, почему matrix.window является NULL, хотя я его создал?

+0

'matrix' не выделялось ... Вы должны один создании экземпляра. –

+0

Большое спасибо! Я изменил код: Matrix * matrix; to: Matrix * matrix = [Matrix alloc]; –

+0

Не забудьте вызвать 'init', идиома для создания экземпляра -' [[Класс alloc] init] '. –

ответ

1

matrix не выделяется или экземпляр:

Matrix *matrix; 

// change to 

Matrix *matrix = [[Matrix alloc] init];