Не удается получить Custom NSObject для инициализации или использования свойств под iOS 5 - PullRequest
0 голосов
/ 07 марта 2012

Я сделал очень простой объект NSObject:

GameSetUpData.h

@interface GameSetUpData : NSObject

@property (readwrite, nonatomic)    NSUInteger      numberOfPlayers;
@property (strong, nonatomic)       NSMutableArray  *playerNames;
@property (strong, nonatomic)       NSString        *gameType;
@property (readwrite, nonatomic)    NSUInteger      numberOfMinutes;
@property (readwrite, nonatomic)    NSUInteger      numberOfTurns;
@property (readwrite, nonatomic)    CGSize          boardSize;

@end

GameSetUpData.m

#import "GameSetUpData.h"

@implementation GameSetUpData

@synthesize numberOfPlayers = _numberOfPlayers;
@synthesize playerNames = _playerNames;
@synthesize gameType = _gameType;
@synthesize numberOfMinutes = _numberOfMinutes;
@synthesize numberOfTurns = _numberOfTurns;
@synthesize boardSize = _boardSize;

@end

Этот класс в основном просто содержит данные. Затем я пытаюсь использовать этот объект в моем viewcontroller:

MainMenu.h

#import <UIKit/UIKit.h>
@class GameSetUpData;

@interface MainMenu : UIViewController

@property (strong, nonatomic) GameSetUpData *gameSetUp;

-(IBAction)tappedNewGame:(id)sender;
-(IBAction)tappedTwoPlayers:(id)sender;
...

MainMenu.m

#import "MainMenu.h"
#import "MJViewController.h"
#import "GameSetUpData.h"

@implementation MainMenu
@synthesize gameSetUp = _gameSetUp;

...

-(IBAction)tappedTwoPlayers:(id)sender {
    _gameSetUp.numberOfPlayers = 2;
    NSLog(@"number of Players: %d", _gameSetUp.numberOfPlayers);
}

К сожалению, мой NSLog говорит, что numberOfPlayers равно 0. Что не так с моим GameSetUpData? Мне сказали, что в iOS5 нам не нужно вызывать alloc / init или создавать метод dealloc. Нужен ли мне метод -(void)init в GameSetUpData? Спасибо всем за потраченное время!

Редактировать: Пожалуйста, распределите / инициализируйте ваши объекты - ARC ТОЛЬКО имеет дело с выпуском / сохранением / автоматическим выпуском. Вам все еще нужно сделать экземпляр объекта! Я прошу прощения за неверную информацию. Я обязательно проверю RTFM в следующий раз ...

1 Ответ

2 голосов
/ 07 марта 2012

Конечно, вы должны выделить / инициализировать ваш объект.Как компилятор должен знать, когда это делать?С ARC вам просто не нужно сохранять или освобождать.

Добавьте куда-нибудь _gameSetUp = [[GameSetUpData alloc] init];.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...