0

@property (nonatomic, strong) NSMutableArray *authorMutableArray;

- (id)init {
    self = [super init];
    if (self) {

        self.authorMutableArray = [[NSMutableArray alloc] initWithObjects:@"First Row", @"Second Row", nil];

        for (NSString *string in authorMutableArray) {
            NSLog(@"String: %@", string);
        }

        NSLog(@"Init in Add Model with Author count:%i", [authorMutableArray count]);


    }
}

访问属性的示例。NSLog 始终显示计数为 0。

    - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.section == 0) { 
        if (indexPath.row == [self.addModel.authorMutableArray count] - 1 ) {
            NSLog(@"count of %i", [self.addModel.authorMutableArray count]);
            return  UITableViewCellEditingStyleInsert;
        }

        else {
            return  UITableViewCellEditingStyleDelete;

        }
    }

    else {
        return UITableViewCellEditingStyleNone;
    }
}

我在 init 中创建的数组没有保持它的值超过这个方法。有什么理由吗?for 循环将显示数组中的两个对象。如果我在调用 init 方法后尝试询问此问题,则数组为空。

更新:谢谢大家的时间和眼睛。我忘记在 init 方法中返回 self 。

4

3 回答 3

5

init 方法不应该返回 self 吗?

于 2012-04-18T18:55:21.807 回答
0

在您的类的接口文件(.h 文件)中声明如下:

@interface Your_Class_Name : UIViewController {
   NSMutableArray *authorMutableArray;

}

@property (nonatomic, strong) NSMutableArray *authorMutableArray;
//i dont know why you prefered strong, chose retain and try again please
于 2012-04-18T18:54:51.857 回答
0

我们在这里不是在处理 C++ 或 Java,-init对象的方法MUST返回一个值。

这个怪癖实际上允许一些非常有趣的东西,例如:

-(id) init {
    NSLog(@"Creating new instance of singleton object...");

    #if __has_feature(objc-arc)
    self = singleton_instance;
    #else
    [self release];
    self = [singleton_instance retain];
    #endif   

    return self;
}

它还允许某种类的“摆姿势”,允许您准确跟踪特定类的对象何时被初始化(对于这个答案来说,这个话题太深了)。

于 2012-04-18T19:06:37.227 回答