【发布时间】:2013-05-12 20:30:05
【问题描述】:
我正在使用最新的 xcode。 实现文件: SimpleCar.m:
#import "SimpleCar.h"
@implementation SimpleCar
// set methods
- (void) setVin: (NSNumber*)newVin {
[vin release];
vin = [[NSNumber alloc] init];
vin = newVin;
}
- (void) setMake: (NSString*)newMake {
[make release];
make = [[NSString alloc] initWithString:newMake];
}
- (void) setModel: (NSString*)newModel {
[model release];
model = [[NSString alloc] initWithString:newModel];
}
// convenience method
- (void) setMake: (NSString*)newMake
andModel: (NSString*)newModel {
// Reuse our methods from earlier
[self setMake:newMake];
[self setModel:newModel];
}
//get methods
- (NSString*) make; {
return make;
}
- (NSString*) model;{
return model;
}
- (NSNumber*) vin;{
return vin;
}
-(void) dealloc
{
[vin release];
[make release];
[model release];
[super dealloc];
}
@end
接口文件: SimpleCar.h:
#import <Foundation/Foundation.h>
@interface SimpleCar : NSObject {
NSString* make;
NSString* model;
NSNumber* vin;
}
// set methods
- (void) setVin: (NSNumber*)newVin;
- (void) setMake: (NSString*)newMake;
- (void) setModel: (NSString*)newModel;
// convenience method
- (void) setMake: (NSString*)newMake
andModel: (NSString*)newModel;
// get methods
- (NSString*) make;
- (NSString*) model;
- (NSNumber*) vin;
@end
当我输入“[vin release], [model release], [make release]”时,在实现文件中出现错误,我无法运行程序。
【问题讨论】:
-
这不仅与Xcode无关,而且缺乏所有研究工作。如果你用谷歌搜索错误消息(我假设是“ARC 禁止显式调用释放”),那么你会得到几十个已回答的 SO 问题。
-
另外,setter 都实现了错误。
-
无论你从哪里得到那个代码,扔掉源代码,不要再看它了。不仅所有的 setter 实现不正确,而且整个模式看起来就像 15 年前的标准公平。折腾它并获得最新的教程。 (我找到了教程网站——太糟糕了)。
-
这段代码是在开玩笑吗?那几行充满了严重的内存泄漏......
-
@holex 它来自 tutsplus.com 关于 Objective-C 的“教程”。
标签: objective-c