Objective c 从另一个类访问NSMutableArray

Objective c 从另一个类访问NSMutableArray,objective-c,xcode,nsmutablearray,Objective C,Xcode,Nsmutablearray,这就是我的实体类的外观: BaseDataEntity.h #import -Foundation/Foundation.h @interface BaseDataEntity : NSObject @property (assign) NSMutableArray *cbxDataList; @property (assign) NSString *resaultText; @end BaseDataEntity.m #import "BaseDataEntity.h" @impl

这就是我的实体类的外观:

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];
}
-(无效)应用程序设计完成启动:(NSNotification*)通知{
BaseDataEntity*AbastateAEntity=[[BaseDataEntity alloc]init];
[自我挫败数据实体:自我挫败];
}
-(iAction)读取端口:(id)发送方{
NSMUTABLEARRY*array=[[NSMUTABLEARRY alloc]init];

对于(int i=0;i您应该使用retain而不是assign来增加cbxDataList的retain计数

@property (retain) NSMutableArray   *cbxDataList;
请注意,该对象需要在某个时候释放,否则可能会出现内存泄漏。

在下面的函数中

-(void)updateUserInterface:(BOOL)piClear
数组创建错误

NSMutableArray* array = [[NSMutableArray alloc] initWithArray:
        [self.baseDataEntity.cbxDataList value]];
上述代码需要替换为:

NSMutableArray* array = [[NSMutableArray alloc] initWithArray:
        self.baseDataEntity.cbxDataList];
试试这些:

@property (retain) NSMutableArray *cbxDataList; 
@property (assign) NSString  *resaultText;
-(void)applicationdFinishLaunching:(NSNotification*)通知中


alloc+init两者。

这不是答案。!!Tnx为答案。它正在进行更多更改:NSMutableArray*array=[[NSMutableArray alloc]initWithArray:[self.baseDataEntity cbxdata]];是的,我后来看到了。Tnx