本帖最后由 conan_o_0 于 2014-12-28 07:40:12 编辑

解决方案 »

  1.   

    有点比较奇怪的是为什么楼主还要自己生成一个tableView.        TableView *tableView = [[TableView alloc] initWithFrame:CGRectMake(0, 50, 320, 430)];
            tableView.delegate = self;
            //tableView.backgroundColor = [UIColor blackColor];
            tableView.backgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 50, 320, 430)];
            self.tableView = tableView;
            [self.tableView addSubview:searchBar];如果是继承自UITableViewController, self.tableView是已经实例好的。
      

  2.   

    因为我在自学阶段我想试下自定义的tableview可以了解多一点
      

  3.   

    你有两个tableview, 如果要使用自定义的tableview, 你可以继承UIViewController.
      

  4.   

    应该是关于name这个成员变量的内存管理问题。你可以尝试将name定义成属性
    @property (nonatomic,strong) NSArray *name;在访问或赋值时,使用self.name 的方式来使用。属性的默认getter,setter方法会帮助你来管理内存。
      

  5.   


    我没有两个tableview吧 只是一个tableview两个方法添加 一个是tableviewcontroller.tableview = tableview, 另一个是[tableviewcontroller.view addsubview:tableview]; 这两个tableview方法我没同时用啊.
      

  6.   


    的确是name的内存问题 有人教我把_name = [name retain];这样就没问题了 可是我不明白这里为什么要引用加1? 
    我定义的全局是@property (nonatomic, retain) NSArray *name;
    当我 _name = name的时候name引用不是已经+1了么?
      

  7.   


    的确是name的内存问题 有人教我把_name = [name retain];这样就没问题了 可是我不明白这里为什么要引用加1? 
    我定义的全局是@property (nonatomic, retain) NSArray *name;
    当我 _name = name的时候name引用不是已经+1了么?
    使用_name访问的是成员变量,没有进行内存管理。使用self.name 是访问属性的getter,setter 方法。编译器会帮助生成属性的getter,setter,它内部的setter方法实现应该是这样:
    -(void)setName:(NSString *)name {
           [_name release];
           _name  = name;
           [_name retain];
    }
    使用_name, self.name 访问它们之间是不同的,区别是明显的。self.name是调用的setter方法,该方法内部对内存进行了管理。