0

我是目标 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

我已经使用应用程序委托的 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 并且我得到一个错误:exc_bad_access code=2 可能是一个简单的新手问题 - 但我花了大约 8 个小时试图弄清楚这一点......也许我需要一个不同的爱好......

4

1 回答 1

0

问题是您的属性selecto是指向长整数的指针,并且 didFinishLaunchingWithOptions:您将其设置为 0,即nil. 在didSelectRowAtIndexPath:中,您尝试将 selecto 指向的任何内容设置为 1。
只需使用@property (nonatomic) NSInteger selecto;andpro.selecto = 1;代替。

于 2013-05-28T04:57:27.843 回答