Проблеми при свързването на клас манипулатор NSTableView

Имам странен проблем в моето приложение Cocoa. Имам главен прозорец с NSTableView в него с контролен клас (PropValTableHandler). Направих връзките между моя NSTableView и PropValTableHandler, но когато се извика методът „numberOfRowsInTableView“, изглежда, че не се използва „PropValTableHandler“, инициализиран в „AddDelegate“, тъй като полето „propMan“ не е инициализирано (това е като използва се нормалният init, така че трябва да бъде друг екземпляр от този клас). Правя ли нещо нередно? Имам друг манипулатор на NSTableView в друг прозорец, който работи, но няма персонализиран метод за стартиране.

Изходни кодове:

AppDelegate

#import "AppDelegate.h"

@implementation AppDelegate

@synthesize propValTableController = _propValTableController;

-(id) init
{
    self = [super init];

    if (self)
    {
        _propMan = [[OCPropertyManager alloc]initWithPath:"./data/"];
        _propValTableController = [[PropValTableHandler alloc] 
                                   [initWithPropManager:_propMan];
    }

    return self;
}

PropValTableHandler

@interface PropValTableHandler : NSObject <NSTableViewDataSource>

@property IBOutlet NSTableView * constants;
@property OCPropertyManager    * propMan;

-(id) initWithPropManager:(OCPropertyManager*)pm;

-(NSInteger) numberOfRowsInTableView:(NSTableView *)tableView;

@end


#import "PropValTableHandler.h"

@implementation PropValTableHandler


-(id) initWithPropManager:(OCPropertyManager*)pm
{
    self = [super self];
    if (self)
    {
        self.propMan = pm;
    }

    return self;
}

/*********** TABLEVIEW DATASOURCE ******************/
-(NSInteger) numberOfRowsInTableView:(NSTableView *)tableView
{
    NSInteger count = [_propMan.consts count];
    return count;
}
/**************************************************/

@end

person Istvan    schedule 07.04.2014    source източник
comment
Бихте ли публикували код там, където инициализирате _propMan?   -  person Zhans    schedule 07.04.2014
comment
Инициализира се в метода „initWithPropManager“ на PropValTableHandler   -  person Istvan    schedule 07.04.2014
comment
Сега, като го гледам отново, имам ли нужда от синтезиране за полето „_propMan“?   -  person Istvan    schedule 07.04.2014
comment
Не съм сигурен :). Не мога да разбера проблема ти   -  person Zhans    schedule 07.04.2014
comment
Отпечатах адреса на самия PropValTableHandler в „initWithPropManager“: 0x0000608000430fa0 и в „numberOfRowsInTableView“: 0x000060800022a7c0. Така че е ясно, че това са два различни случая и не знам защо автоматично се инициализира друг...   -  person Istvan    schedule 07.04.2014


Отговори (1)


Реших проблема, като добавих a

@property IBOutlet AppDelegate *parent;

за класа PropValTableHandler и създаване на връзки. По този начин мога да използвам:

parent.propMan

когато някога имам нужда от него, без да предавам препратка към него в метода init.

person Istvan    schedule 07.04.2014