0

これが私のエンティティクラスの外観です。

BaseDataEntity.h

#import -Foundation/Foundation.h

@interface BaseDataEntity : NSObject

@property (assign) NSMutableArray *cbxDataList;
@property (assign) NSString  *resaultText;

@end

BaseDataEntity.m

#import "BaseDataEntity.h"

@implementation BaseDataEntity

@synthesize cbxDataList = _cbxDataList;
@synthesize resaultText = _resaultText;

@end

そして、これは私がそれらにアクセスしようとする方法です:

-(void)applicationDidFinishLaunching:(NSNotification *)aNotification{

    BaseDataEntity *aBaseDataEntity = [[BaseDataEntity alloc] init];
    [self setBaseDataEntity:aBaseDataEntity];

}

-(IBAction)ReadPort:(id)sender {

    NSMutableArray* array = [[NSMutableArray alloc] init];
    for (int i=0; i<10; i++) {
        NSString *temp = [NSString stringWithFormat:@"Test %d", i];
        [array addObject:temp];
    }
    [self.baseDataEntity setCbxDataList:array];

    NSLog(@" cbxDataList count = %lu",[array count]);
    [array release];

    [self.baseDataEntity setResaultText:@"Test"];
    [self updateUserInterface:TRUE];
}


-(void)updateUserInterface:(BOOL)piClear{

    NSString *textValue = [NSString stringWithFormat:@"%@"
                           ,[self.baseDataEntity resaultText]];

    if([self.ResaultTextField stringValue] != nil && !piClear){
        textValue = [NSString stringWithFormat:@"%@\n%@", textValue
                     ,[self.ResaultTextField stringValue]];
    }

    NSMutableArray* array = [[NSMutableArray alloc] initWithArray:
        [self.baseDataEntity.cbxDataList value]];

    for (int i = 0; i < [array count]; i++) {
        textValue = [NSString stringWithFormat:@"%@\n%@", textValue
                     ,[array objectAtIndex:i]];
    }
    [array release];

    [self.ResaultTextField setStringValue:textValue];
}

問題は、これを更新resaultTextしてその値にアクセスできることです。しかし、cbxDataList値は常に空です。

4

3 に答える 3

0

cbxDataListの保持カウントを増やすには、assignの代わりにretainを使用する必要があります。

@property (retain) NSMutableArray   *cbxDataList;

オブジェクトはいつか解放される必要があることに注意してください。そうしないと、メモリリークが発生する可能性があります。

于 2013-02-22T08:58:52.037 に答える
0

以下の関数では、

-(void)updateUserInterface:(BOOL)piClear

アレイの作成が間違っています。

NSMutableArray* array = [[NSMutableArray alloc] initWithArray:
        [self.baseDataEntity.cbxDataList value]];

上記のコードは、に置き換える必要があります。

NSMutableArray* array = [[NSMutableArray alloc] initWithArray:
        self.baseDataEntity.cbxDataList];
于 2013-02-22T09:01:17.570 に答える
0

これらを試してください:

@property (retain) NSMutableArray *cbxDataList; 
@property (assign) NSString  *resaultText;

そしてで-(void)applicationDidFinishLaunching:(NSNotification *)aNotification

両方をalloc+initします。

于 2013-02-22T09:04:16.267 に答える