4

ARC を利用したプロジェクトでシンプルな UItableview アプリを作成しようとしています。テーブルは問題なくレンダリングされますが、セルをスクロールまたはタップしようとすると、アプリがクラッシュします。

NSZombies を見ると (それが適切な言い方ですか?) 「-[PlacesViewController RespondsToSelector:]: message sent to deallocated instance 0x7c29240」というメッセージが表示されます。

過去にUItableviewsの実装に成功したので、これはARCと関係があると思いますが、これはARCを使用した最初のプロジェクトです。私は非常に単純なものが欠けているに違いないことを知っています。

PlacesTableViewController.h

@interface PlacesViewController : UIViewController
<UITableViewDelegate,UITableViewDataSource>

@property (nonatomic, strong) UITableView *myTableView;

@end 

PlacesTableViewController.m

#import "PlacesTableViewController.h"

@implementation PlacesViewController

@synthesize myTableView;
- (void)viewDidLoad
{
    [super viewDidLoad];

    self.myTableView    =   [[UITableView alloc] initWithFrame:self.view.bounds   style:UITableViewStylePlain];

    self.myTableView.dataSource =   self;
    self.myTableView.delegate   =   self;

    [self.view addSubview:self.myTableView];
}
#pragma mark - UIViewTable DataSource methods

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 100;
}



-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath  *)indexPath
{
    UITableViewCell *result = nil;

    static NSString *CellIdentifier = @"MyTableViewCellId";

    result =    [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if(result == nil)
    {
        result = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    result.textLabel.text   =   [NSString stringWithFormat:@"Cell %ld",(long)indexPath.row];


    return result;
}
@end
4

1 に答える 1

1

あなたが投稿したコードに明らかに問題はありません。問題は、PlacesViewController を作成して保持するコードにあります。あなたはおそらくそれを作成していますが、永続的にどこにも保存していません。PlacesViewController は、ivar に保存するか、それを管理するビュー コンテナー (UINavigationController、UITabController など) に配置する必要があります。

于 2012-10-19T13:37:36.960 に答える