Class 如何将参数属性化到C4中的子类
我试图创建一个子类对象,它的大小可以在我声明它时确定。例如,做一些接近“circle(int-width,int-height)”的事情,并在C4WorkSpace中,指定两个定义圆大小的数字。如果我理解正确,您可以使用初始值设定项,如下所示:Class 如何将参数属性化到C4中的子类,class,variables,object,attributes,c4,Class,Variables,Object,Attributes,C4,我试图创建一个子类对象,它的大小可以在我声明它时确定。例如,做一些接近“circle(int-width,int-height)”的事情,并在C4WorkSpace中,指定两个定义圆大小的数字。如果我理解正确,您可以使用初始值设定项,如下所示: - (id) initWithNumber: (int) n { self = [super init]; ❶ ❷ if (self) { self->_number = n; ❸ } return
- (id) initWithNumber: (int) n {
self = [super init]; ❶ ❷
if (self) {
self->_number = n; ❸
}
return self; ❹
}
…但我不太明白如何使用它以及放在哪里
这是我正在使用的代码。我在椭圆的参数中插入了“size”,只是为了说明我要做的事情。
我的circle.h文件:
#import "C4Shape.h"
@interface circle : C4Shape
@end
还有圆。我是一个:
#import "circle.h"
@implementation circle
-(void) setup
{
[self addGesture:PAN name:@"pan" action:@"move:"];
[self addGesture:TAP name:@"tap" action:@"changeColour"];
[self ellipse:CGRectMake(0, 0, size, size)];
[self setFillColor:[UIColor blackColor]];
[self setStrokeColor:[UIColor blackColor]];
}
-(void) changeColour
{
self.fillColor = [UIColor colorWithRed:[C4Math randomInt: 100]/100.0f green:[C4Math randomInt: 100]/100.0f blue:[C4Math randomInt: 100]/100.0f alpha:1.0f];
}
@end
在本例中,将变量赋给C4中的子类的最佳方法是什么?如果可能的话,你能解释一下我是如何在C4WorkSpace.m中创建对象的吗
谢谢你的关注。如果我不清楚,很抱歉。你可以这样做。您必须将初始值设定项方法声明到头文件中,以便其他文件看到它。您需要创建一个名为
size
的实例变量,并将其设置为您的数字。或者,您可以使用一个。您可以在Cirlce.m文件中提供定义。我已经将self->size更改为just size,因为它是类中的一个实例变量
在C4Workspace.m
中,需要导入头文件,然后才能在文件中的任何位置创建一个对象。您需要调用alloc
,然后调用initWithNumber
来创建对象。您必须调用setup
,才能让它显示在屏幕上,因为您提供了所有代码
查看相关讨论
圆圈.h
#import "C4Shape.h"
@interface Circle : C4Shape
- (id) initWithNumber: (int) n;
@end
圆圈.m
#import "Circle.h"
@implementation Circle
{
int size;
}
- (id) initWithNumber: (int) n {
self = [super init];
if (self) {
size = n;
}
return self;
}
-(void) setup
{
[self addGesture:PAN name:@"pan" action:@"move:"];
[self addGesture:TAP name:@"tap" action:@"changeColour"];
[self ellipse:CGRectMake(0, 0, size, size)];
[self setFillColor:[UIColor blackColor]];
[self setStrokeColor:[UIColor blackColor]];
}
-(void) changeColour
{
self.fillColor = [UIColor colorWithRed:[C4Math randomInt: 100]/100.0f green:[C4Math randomInt: 100]/100.0f blue:[C4Math randomInt: 100]/100.0f alpha:1.0f];
}
@end
#import "C4Shape.h"
#import "C4WorkSpace.h"
#import "Circle.h"
@implementation C4WorkSpace
{
Circle * c;
}
-(void)setup
{
c = [[Circle alloc] initWithNumber:100];
[c setup];
[self.canvas addSubview:c];
}
@end
C4Workspace.m
#import "Circle.h"
@implementation Circle
{
int size;
}
- (id) initWithNumber: (int) n {
self = [super init];
if (self) {
size = n;
}
return self;
}
-(void) setup
{
[self addGesture:PAN name:@"pan" action:@"move:"];
[self addGesture:TAP name:@"tap" action:@"changeColour"];
[self ellipse:CGRectMake(0, 0, size, size)];
[self setFillColor:[UIColor blackColor]];
[self setStrokeColor:[UIColor blackColor]];
}
-(void) changeColour
{
self.fillColor = [UIColor colorWithRed:[C4Math randomInt: 100]/100.0f green:[C4Math randomInt: 100]/100.0f blue:[C4Math randomInt: 100]/100.0f alpha:1.0f];
}
@end
#import "C4Shape.h"
#import "C4WorkSpace.h"
#import "Circle.h"
@implementation C4WorkSpace
{
Circle * c;
}
-(void)setup
{
c = [[Circle alloc] initWithNumber:100];
[c setup];
[self.canvas addSubview:c];
}
@end
非常感谢你,亚当!我现在明白了初始值设定项!