我是Objective-C的新手,我在使用NSString对象时遇到了问题。
我的程序创建了一个存储XY对的对象。安装员和吸气剂工作正常。有一种打印方法以“(x,y)格式将数据点打印到控制台,这也可以正常工作。
我想添加一个方法,将该点作为字符串返回,形式为“(x,y)”,以防它将用于其他地方的显示。
我认为这可能与需要分配/初始化由toString方法返回的NSString有关。我在stackoverflow上研究了这个问题,但无法判断我是否做错了。 When not to alloc and init an NSString
以下是带有输出的标题,接口和程序文件。
标题
#import <Foundation/Foundation.h>
@interface XYPoint : NSObject
@property int x, y;
-(void) setX: (int) xVal andY: (int) yVal;
-(void) print;
- (NSString *) toString;
@end
实施
#import "XYPoint.h"
@implementation XYPoint
@synthesize x, y;
-(void) setX: (int) xVal andY: (int) yVal
{
x = xVal;
y = yVal;
}
-(void) print
{
NSLog(@" (%i,%i) ", x, y);
}
-(NSString *) toString
{
NSString *stringXY = [NSString stringWithFormat: @" (%i,%i) ",self.x,self.y ];
return stringXY;
}
@end
程序
#import "XYPoint.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
XYPoint *p1 = [[XYPoint alloc] init];
[p1 setX:1 andY: 2];
[p1 print];
NSString *text = [p1 toString];
NSLog(@"This is our data point %@",text);
}
return 0;
}
以下是调试器和控制台的输出。