我正在从事这项在线发现的工作(使用iOS进行中级应用开发)。我被困在c和d部分,不知道它要求我做什么。
我知道如何打印int(%i
)和object(%@
),但%@
打印所有数据?任何帮助或建议将不胜感激。
第6部分
a)使用属性A
,a1
和a2
(a3
,int
,string
实施课程int
)。
b)新对象自动初始化为1
,"hello"
,1
c)还为任何数据和构造函数(不带alloc
调用)提供初始化程序来执行相同的操作
d)确保%@
A
对象将打印所有数据。
这是我到目前为止所做的:
// classA.h
#import <Foundation/Foundation.h>
@interface ClassA : NSObject
// Part 6a
@property int a1;
@property NSString *a2;
@property int a3;
-(ClassA *) initWithA1: (int) x andA2: (NSString *) s andA3: (int) y;
@end
//classA.m
#import "ClassA.h"
@implementation ClassA
-(ClassA *) initWithA1:(int)x andA2:(NSString *)s andA3:(int)y {
self = [super init];
if (self) {
self.a1 = x;
self.a2 = s;
self.a3 = y;
}
return self;
}
// part 6b
-(ClassA *) init {
if (self = [super init]) {
self.a1 = 0;
self.a2 =@"hello";
self.a3 = 0;
}
return self;
}
@end
答案 0 :(得分:1)
参考部分&#34; b&#34;你的问题:
作为一般规则,只有1个初始化程序应该执行&#34; real&#34;工作。这通常被称为指定的初始化程序。因此,您的init
方法可能应该是这样的:
- (id) init
{
return [self initWithA1:1 andA2:@"hello" andA3:1];
}
答案 1 :(得分:0)
正如@orbitor所写,你的班级应该有一个指定的初始化者。
因此,您的
init
方法可能应该是这样的:
- (id) init
{
return [self initWithA1:1 andA2:@"hello" andA3:1];
}
要打印所有对象,您应该实现自定义description
方法:
- (NSString *) description
{
return [NSString stringWithFormat:@"a1 = %d, a2 = %@, a3 = %d", self.a1, self.a2, self.a3];;
}
根据c:
类方法new
只调用alloc
和init
方法,因此您只应确保正确编写了所有初始化程序。