抱歉,我是Objective-C的新手,我还在弄清楚如何使用点表示法设置属性。我有3个文件如下...到最后(在主要),我已设置radius属性并记录它,但我不知道如何设置中心属性,因为它不是浮点数(如半径)这是一个阵列。我最初尝试过像 - ball.center = {12,14,16}不起作用。
我的班级.m文件是:
@implementation Sphere
-(void)setCenter:(NSArray *)center radius:(float)radius {
_center = center;
_radius = radius;
} @end
我的班级.h文件是:
@interface Sphere : NSObject
@property (nonatomic) float radius;
@property (nonatomic, strong) NSArray *center;
-(void)setCenter:(NSArray *)center radius:(float)radius;
@end
,我的主文件是:
int main(int argc, const char * argv[])
{
@autoreleasepool {
Sphere *ball = [[Sphere alloc] init];
ball.radius = 34;
**// ball.center = an array, so how do we set that?**//
**//do I have to set the values of the array first?//**
NSLog(@"\nball radius %f\n", ball.radius);
**//I want to be able to log the values of the array the way I logged the radius.**
}
return 0;
}
答案 0 :(得分:2)
我会回答你的问题“如何创建一个带数字的数组”,但看起来你根本不需要数组(阅读所有答案: - ))
首先需要初始化数组,例如:
NSArray *array = [NSArray arrayWithObjects:object1, object2, object3, nil];
还有一个文字可以让你用友好的synthax做同样的事情
NSArray *array = @[object1, object2, object3];
请注意,您只能在NSArray中插入对象而不是原语,因此您需要一些NSNumber(NSNumber是表示数字的对象)。
您可以使用类方法创建NSNumber
NSNumber *one = [NSNumber numberWithInt:1];
或文字合成器(通常因其简洁而优选)
NSNumber *one = @(1);
所以,这样的事情会做
NSArray *array = @[@(1), @(2), @(3)];
但是,我看到你想要代表中心,通常要做到这一点,你不使用一个对象数组,你使用的是CGPoint,它不是一个数组,它是一个包含1个点的结构(即X和Y),它代表中心是完美的!
所以代码看起来像:
@implementation Sphere
-(void)setCenter:(CGPoint)center radius:(float)radius {
_center = center;
_radius = radius;
}
@end
并使用它:
Sphere *ball = [[Sphere alloc] init];
ball.center = CGPointMake(10, 20);
NSLog(@"my ball center x:%d y:%d", ball.center.x, ball.center.y);