이 시험은 실패합니다도트 구문을 사용하여이 명령문의 LHS를 두 번 호출하는 이유는 무엇입니까?
#import "GTMSenTestCase.h"
@interface Person : NSObject
@property (readonly) NSString *name;
@end
@implementation Person
- (NSString *)name { return @"Nick"; }
@end
@interface TemplateUnitTest : GTMTestCase @end
@implementation TemplateUnitTest
static BOOL called = NO;
- (Person *)get {
if (called) { STFail(nil); }
called = YES;
return [[Person new] autorelease];
}
- (void)testPropertyMakesThingGetSentTwice {
NSString *s = [[self get].name stringByAppendingString:@"foo"];
STAssertEqualObjects(@"Nickfoo", s, nil);
}
@end
을 내가 [[self get] name]
와 [self get].name
를 교체하는 경우, 그것은 전달합니다. 즉, 도트 구문을 사용하면 '.'의 LHS 두 번 평가됩니다. 어떻게 될까요? 당신이 목표 - C에서 도트 구문을 사용 공개적으로 인정하는
아, 감사합니다. 나에게 순결로의 전환을 고려해 보라. 필자의 경우 셀렉터는 웹 서비스를 불쾌하게 여겼다. 관심이 있으시면 apple (# 6729855)에 버그를 기록했습니다. –