2 variables class object objective-c
我有以下目标C类.这是为了在电影风格设置,标题场地ID等电影上存储信息.每当我尝试创建这个类的对象时:
Film film = [[Film alloc] init];
Run Code Online (Sandbox Code Playgroud)
我得到以下错误:variable-sizedobject可能无法初始化,静态分配Objective-C类"Film"的实例,静态分配Objective-C类"Film"的实例.
我对Objective C很新,可能仍然处于C#思维模式中,有谁能告诉我我做错了什么?
谢谢迈克尔
码:
// Film.m
#import "Film.h"
static NSUInteger currentID = -1;
@implementation Film
@synthesize filmID, title, venueID;
-(id)init {
self = [super init];
if(self != nil) {
if (currentID == -1)
{
currentID = 1;
}
filmID = currentID;
currentID++;
title = [[NSString alloc] init];
venueID = 0;
}
return self;
}
-(void)dealloc {
[title release];
[super dealloc];
}
+(NSUInteger)getCurrentID {
return currentID;
}
+(void)setCurrentID:(NSUInteger)value {
if (currentID != value) {
currentID = value;
}
}
@end
Run Code Online (Sandbox Code Playgroud)
// Film.h
#import <Foundation/Foundation.h>
@interface Film : NSObject {
NSUInteger filmID;
NSString *title;
NSUInteger venueID;
}
+ (NSUInteger)getCurrentID;
+ (void)setCurrentID:(NSUInteger)value;
@property (nonatomic) NSUInteger filmID;
@property (nonatomic, copy) NSString *title;
@property (nonatomic) NSUInteger venueID;
//Initializers
-(id)init;
@end
Run Code Online (Sandbox Code Playgroud)
您需要保存对象引用的变量为引用类型.您可以使用星号执行此操作 - 请参阅以下内容:
Film *film = [[Film alloc] init];
Run Code Online (Sandbox Code Playgroud)
来自Java我经常把上面的想法看作:
Film* film = [[Film alloc] init];
Run Code Online (Sandbox Code Playgroud)
我倾向于将'reference'标记与类型相关联.但是,希望更精通C/C++/ObjC的人会告诉我为什么这是错误的,以及在这种情况下实际调用的是"星号".
| 归档时间: |
|
| 查看次数: |
2525 次 |
| 最近记录: |