如何在tableviewcontroller中设置另一个对象的整数属性

时间:2013-05-28 04:35:36

标签: uitableview exc-bad-access

我是目标C的新手,我正在尝试...并尝试在tableviewcontroller代码中设置模型对象的整数属性。这是模型对象project.h的顶部:

#import <Foundation/Foundation.h>
@interface Project : NSObject
@property (nonatomic) NSInteger *selecto;
@end

和project.m只是

#import "Project.h"
@implementation Project
@synthesize selecto;
@end

我已经使用app delegate的didFinishLaunchingWithOptions方法中的代码将项目实例添加到数组中,如下所示:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
projects = [NSMutableArray arrayWithCapacity:20];
Project *project = [[Project alloc] init];
project.selecto = 0;
[projects addObject:project];
return YES;
}

并且tableViewControler的didselect方法是:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
int selectedRow = [indexPath row];
Project *pro = [projects objectAtIndex:selectedRow] ;
*pro.selecto = 1;//errors here with exc_bad_access code=2 
}

每当我运行它时,它会冻结分配属性selecto并且我得到一个n错误: exc_bad_access code = 2 可能是一个简单的新手问题 - 但我花了大约8个小时试图解决这个问题......也许我需要一个不同的爱好......

1 个答案:

答案 0 :(得分:0)

问题在于,您的媒体资源selecto是长整数的指针,而didFinishLaunchingWithOptions:则将其设为0,即nil。在didSelectRowAtIndexPath:中,您尝试将1设置为1 只需使用@property (nonatomic) NSInteger selecto;pro.selecto = 1;代替。