我是初学者ObectiveC用户,请保留简单的答案。我有相当多的C和C++经验。ObjectiveC - 构造函数,内存管理
现在,使用ObjectiveC我想创建两个对象,而不是使用属性。我的问题是“这里有什么问题”,而不是“如何做不同”。 所以有我的代码:
@implementation News
NSString *_title;
NSString *_excerpt;
NSString *_content;
NSString *_thumbnailURL;
NSString *_date;
-(id)initWithTitle:(NSString *)title excerpt:(NSString *)excerpt content:(NSString*)content thumbnail:(NSString *)thumbnailURL date:(NSString *)date {
self = [super init];
if (self) {
_title = [[NSString alloc] initWithString:title];
_excerpt = [[NSString alloc] initWithString:excerpt];
_content = [[NSString alloc] initWithString:content];
_thumbnailURL = [[NSString alloc] initWithString:thumbnailURL];
_date = [[NSString alloc] initWithString:date];
}
return self;
}
-(void)showData {
NSLog(@" title:%@", _title);
NSLog(@" excerpt:%@", _excerpt);
NSLog(@" thumbnailURL:%@", _thumbnailURL);
NSLog(@" date:%@", _date);
NSLog(@" getContent:%@", _content);
}
@end
现在我要创建两个对象:
News *nws = [[News alloc] initWithTitle:@"title1" excerpt:@"excerpt1" content:@"content1" thumbnail:@"thumbnail1" date:@"date1"];
News *nws2 = [[News alloc] initWithTitle:@"title3" excerpt:@"excerpt3" content:@"content3" thumbnail:@"thumbnail3" date:@"date3"];
之后想展示什么是这里面的对象:
[nws showData];
[nws2 showData];
的结果是,两个对象都有相同的值。全部以“3”结束。我认为nws对象将包含以“1”结尾的值,nws2将包含具有“3”的值。但它不是那样工作的。为什么?错误在哪里? 请大家帮忙,谢谢!
问题是您在{@implementation中的字段周围丢失{}。 – Jano
Jano,thx!原因是缺少{}字段。谢谢! – Sid
我正在考虑没有{}的代码是如何被编译器解释的。为什么编译器没有显示任何警告......我不确定我是否可以理解潜在的答案(初学者Objective-C),但它确实很有趣。 – Sid