我写了一个继承自UITableViewController的子类,其中一个函数会导致程序一启动就挂掉。我把那个函数给注释掉程序就不会出错了,那个函数是:- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [[masterColorList objectAtIndex:section] count];
}

解决方案 »

  1.   

    [masterColorList objectAtIndex:section]
    section 应该超过了 masterColorList 的 count,
    做个测试。
    还有个函数,numberOfSections 你返回的是多少。
      

  2.   

    先问楼主怎么得到的section的多少的????把这个问题解决了后面的就好办了,还有一点,在加载TableView的内容时你的masterColorList不因该有其他操作!
      

  3.   

    [masterColorList objectAtIndex:section]  要打印出来看看
      

  4.   

    只要是我把- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section这个函数注释掉程序就不会出错了,但是也就没有数据显示了。
      

  5.   

    我把代码贴出来,大侠们帮看看啊,刚刚开始自学,啥都不会啊,多谢了。头文件#import <Foundation/Foundation.h>
    @interface RootViewController : UITableViewController
    {
    NSArray *masterColorList;
    }@property(retain)NSArray *masterColorList;
    @end代码文件:#import "RootViewController.h"
    #import "CoreGraphics/CGGeometry.h"
    @implementation RootViewController
    @synthesize masterColorList;- (id)initWithCoder:(NSCoder *)decoder
    {
    if (self = [super initWithCoder:decoder])
    {

    NSArray *colorList = [NSArray arrayWithObjects:
      [NSDictionary dictionaryWithObjectsAndKeys:@"brownColor",@"titleValue",[UIColor brownColor],@"colorValue",nil],
      [NSDictionary dictionaryWithObjectsAndKeys:@"orangeColor",@"titleValue",[UIColor orangeColor],@"colorValue",nil],
      [NSDictionary dictionaryWithObjectsAndKeys:@"purpleColor",@"titleValue",[UIColor purpleColor],@"colorValue",nil],
      [NSDictionary dictionaryWithObjectsAndKeys:@"redColor", @"titleValue",[UIColor redColor],@"colorValue",nil],
      nil];


    NSArray *otherColorList = [NSArray arrayWithObjects:
       [NSDictionary dictionaryWithObjectsAndKeys:@"RGB:0.25/0/0", @"@titleValue",[UIColor colorWithRed:0.25 green:0 blue:0 alpha:1],@"colorValue",nil],
       [NSDictionary dictionaryWithObjectsAndKeys:@"RGB:0.5/0/0", @"@titleValue",[UIColor colorWithRed:0.5 green:0 blue:0 alpha:1],@"colorValue",nil],
       [NSDictionary dictionaryWithObjectsAndKeys:@"RGB:0.75/0/0", @"@titleValue",[UIColor colorWithRed:0.75 green:0 blue:0 alpha:1],@"colorValue",nil],
       nil
       ];

    masterColorList = [NSArray arrayWithObjects:colorList,otherColorList,nil];
    [masterColorList retain];
    }

    return self;
    }- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
    {
    return masterColorList.count;
    }/*
     - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
     {
     return [[masterColorList objectAtIndex:section] count];
     }
    */- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
    static NSString *MyIdentifier = @"MyIdentifier";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];

    if (cell = nil)
    {
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease];
    }

    cell.textColor = [[[masterColorList objectAtIndex:indexPath.section] objectAtIndex:indexPath.row] objectForKey:@"colorValue"];
    cell.selectedTextColor = [[[masterColorList objectAtIndex:indexPath.section] objectAtIndex:indexPath.row] objectForKey:@"colorValue"];
    cell.text = [[[masterColorList objectAtIndex:indexPath.section] objectAtIndex:indexPath.row] objectForKey:@"titleValue"];

    return cell;
    }- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
    {
    if (section == 0)
    {
    return @"SDK Colors";
    }
    else if (section == 1)
    {
    return @"RGB Colors";
    }
    return 0;
    }- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
    [[tableView cellForRowAtIndexPath:indexPath] setAccessoryType:UITableViewCellAccessoryCheck];
    }- (void)dealloc
    {
    [super dealloc];
    [masterColorList release];
    }- (void)viewDidLoad
    {
    [super viewDidLoad];
    }
    - (void)viewWillAppear:(BOOL)animated
    {
    [super viewWillAppear:animated];
    }- (void)viewDidAppear:(BOOL)animated
    {
    [super viewDidAppear:animated];
    }- (void)viewWillDisappear:(BOOL)animated
    {
    }- (void)viewDidDisappear:(BOOL)animated
    {
    }- (void)didReceiveMemoryWarning
    {
    [super didReceiveMemoryWarning];
    }
    @end
      

  6.   

    回1楼,section应该没超啊,没法测试,只要是有那个函数,即便返回一个手工赋值的变量或者函数为空,也会导致程序挂掉。别:numberOfSections返回的是2。回2楼,我把代码贴出来了,麻烦帮看下啊,我也不知道section怎么得到的。回3楼,没法测试啊,那个函数在就会导致程序挂掉
      

  7.   


    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    中,
    if (cell == nil)
    少了一个等号建议以后写判断语句时,写成类似这样
    if ( nil == cell)