在Objective-C中将数据传递到tableView并了解对象范围

在Objective-C中将数据传递到tableView并了解对象范围,objective-c,macos,cocoa,interface-builder,Objective C,Macos,Cocoa,Interface Builder,我已经和straight objective-c合作了几个星期了,最近我一直在开发小型的cocoa mac应用程序来开始这方面的工作。我现在正试图找出我在IB和Cocoa中遇到的几个怪癖,我相当确定这两个怪癖都与对象范围有关 下面是我的文件,其他导入没有什么特别之处。奇怪的是,我的list变量将记录两个不同的数组,即使我使用self将类实例作为目标。也许我用错了这个关键字,或者我只是遗漏了一些明显的东西,但无论如何,我的列表var肯定是由update和create方法独立跟踪的 我的第二个问题是

我已经和straight objective-c合作了几个星期了,最近我一直在开发小型的cocoa mac应用程序来开始这方面的工作。我现在正试图找出我在IB和Cocoa中遇到的几个怪癖,我相当确定这两个怪癖都与对象范围有关

下面是我的文件,其他导入没有什么特别之处。奇怪的是,我的list变量将记录两个不同的数组,即使我使用self将类实例作为目标。也许我用错了这个关键字,或者我只是遗漏了一些明显的东西,但无论如何,我的列表var肯定是由update和create方法独立跟踪的

我的第二个问题是,如果不是由iAction触发,我的create方法将无法工作。目前,我已将其链接到一个单独的按钮,以使用update方法重新加载我的表视图。为什么我的create方法在我将其设置为void并直接从另一个控制器调用该方法时无法工作

#import "Lesson_14AppDelegate.h"
#import "TableViewController.h"
#import "Transaction.h"

@implementation TableViewController

@synthesize list, transaction;

- (id) init
{   
    self = [super init];
    if (self) 
    {
        Transaction *aTransaction = [[Transaction alloc] init];
        transaction = aTransaction;
        list = [[NSMutableArray alloc] init];
    }

    return self;
}

- (NSInteger) numberOfRowsInTableView: (NSTableView *) tableView 
    {
    return [self.list count];
}

- (id) tableView: (NSTableView *) tableView objectValueForTableColumn:(NSTableColumn *) tableColumn row: (NSInteger) row 
{
    Transaction *t = [self.list objectAtIndex:row];
    NSString *identifier = [tableColumn identifier];
    return [t valueForKey:identifier];
}

- (IBAction) update: (id) sender
{   
    [self.list addObject: self.transaction];
    [tableView reloadData];

    NSLog(@"list: %@", self.list);  
}

- (IBAction) create: (float) amount : (NSString *) description
{               
    [self.list addObject: description]; 
    [tableView reloadData];

    NSLog(@"list: %@", self.list);      
}

- (void) dealloc
{
    [self.list release];
    [self.transaction release];
    [super dealloc];
}

@end

为什么您的
update
方法执行
addObject
?这不是应该修改数组的内容而不是添加到数组中吗?逻辑上是的。。我以解决此错误的名义暂时终止了我的体系结构,但是因为我的按钮点击被附加到更新,并且我的创建方法被编程调用。我不明白为什么调用之间
列表的日志记录会有所不同;你的代码在我看来还可以。如果你想看看完整的应用程序,它就在这里:当你使用它时,你可以填写数量和描述(确保模糊或点击每个字段设置变量),然后你会看到添加按钮和更新按钮分别触发创建和更新,并创建不同的数组