0

私はここ数週間、まっすぐなObjective-cを使用してきましたが、最近、その分野で始めるために小さなcocoamacアプリを構築しています。私は今、IBとCocoaで遭遇したいくつかの癖を理解しようとしていますが、どちらもオブジェクトスコープに関連していると確信しています。

以下は問題の私のファイルです。他のインポートで特別なことは何も起こっていません。ここで奇妙なのは、 selfでクラスインスタンスをターゲットにしている場合でも、リスト変数が2つの異なる配列をログに記録することです。このキーワードを間違って使用しているのかもしれませんし、明らかな何かが欠けているのかもしれませんが、いずれにしても、私のリスト変数は、updateメソッドとcreateメソッドの両方によって確実に独立して追跡されます。

2番目の問題は、IBActionによってトリガーされない場合、 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
4

0 に答える 0