没有调用参数的Init方法

时间:2013-04-18 07:44:17

标签: iphone objective-c xcode

我花了好几个小时试图解决这个问题 我正在尝试使用参数

初始化一个类
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    //Fetch the value of the selected row in NSString
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
   // NSString *tableRowValue = cell.text;
     tableRowValue = [[listOfItems objectAtIndex:indexPath.row]objectForKey: @"clientId"];


    //Call the next view

    ContactsList *contactsList = [[ContactsList alloc] initWithNibName:NSStringFromClass([ContactsList class]) bundle:nil];
    @try {

        [self presentModalViewController:contactsList animated:YES];
    }
    @catch (NSException *ex) {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:[NSString stringWithFormat:@"%@",ex]
                                                       delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
        [alert show];
    }



    contactsList.modalTransitionStyle = UIModalTransitionStyleCrossDissolve ;

    //Initialize the view with the clicked row value thwough NSString variable
    [contactsList init:tableRowValue];

}

这行代码

[contactsList init:tableRowValue];

我收到以下警告:表达结果未使用

并且在ContactsList类中没有调用init方法

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

ContactList对象已在initWithNibName:方法中初始化,该方法又调用从NSObject继承的init方法(没有参数)。

如果您需要在初始化后设置视图,请创建一个名为“setupWithTableRowValue:”的方法或类似的方法。

答案 1 :(得分:0)

你不应该以这种方式调用init。应该在分配对象后首先调用init,而不再重新调用init。在您的情况下initWithNibName已经通过init进行了调用。

改用一些setter。你的二传手不需要退货。 init始终返回id。所以 contactsList = [contactsList init:tableRowValue]; 如果这是直接调用的,那将是很好的IF contactList = [ContactsList alloc]; 因为tableRowValue实际上可能返回的另一个对象不是调用它的对象。你没有使用返回值,因此理论上可以放松你的对象。

再次:使用setter或类似方法将contactsList传递给{{1}}。