我有一个名为NSObject的TimePass子类的类。它有一个属性
NSString *name
在TimePass的(.m)文件中我为我的属性名称
定义了一个构造函数-(NSString) name {
self.name = @"aseem";
return self.name;
}
当我在单元测试类中测试XCTAssertNotNil
时,它给出了一个错误。我正在测试它是nil
。如果我将self.name
替换为_name
,则可以正常使用。
答案 0 :(得分:0)
您不希望像您一样覆盖属性的setter,因为您可能最终会进入无限循环。考虑一下你的方法:
- (NSString *)name {
self.name = @"aseem";
return self.name;
}
你将self.name设置为@“aseem”,然后返回self.name,所以当你实际使用self.name做任何事情时,你实际上调用你刚创建的名字方法,因此你再次将self.name设置为aseem并告诉它返回self.name,再次调用该方法,依此类推。简而言之,在返回的旁路中使用_name实例变量一遍又一遍地调用该函数,并简单地返回您刚设置的字符串。
不要创建属性,只需使用如下的实例变量:
#import <XCTest/XCTest.h>
@interface YourTestClass : XCTestCase {
NSString *_name;
}
@end
@implementation YourTestClass
- (void)setUp {
[super setUp];
_name = @"aseem";
}
@end