我是目标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个小时试图解决这个问题......也许我需要一个不同的爱好......
答案 0 :(得分:0)
问题在于,您的媒体资源selecto
是长整数的指针,而didFinishLaunchingWithOptions:
则将其设为0,即nil
。在didSelectRowAtIndexPath:
中,您尝试将1设置为1
只需使用@property (nonatomic) NSInteger selecto;
和pro.selecto = 1;
代替。