Objective-C getter 函数指向空实现会怎么样

OC 中如果调用一个没有实现的方法,运行时会 crash, 调试过 OC 代码的人估计都见过这个错误。

表头 gdgx
Did ghfgg
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[GetterTest unrecognizeSelector]: unrecognized selector sent to instance 0x7fc801d12850'

然而,如果 @property 中的 getter 方法没有实现,结果是什么样呢?我写了个 demo 测试了一下。

//GetterTest.h
@interface GetterTest : NSObject

@property (nonatomic, strong, getter=lowcaseGetter) NSString *caseGetter;

@end
//  GetterTest.m
#import "GetterTest.h"

@implementation GetterTest

- (NSString *)caseGetter
{
    return @"Got it ";
}

@end

运行一下

Objective-C getter 函数指向空实现会怎么样_第1张图片
运行结果

可以看到,程序没有 crash,即便实现了默认的 getter 方法,依然返回的结果是一个 nil

所以,如果程序中出现这种错误,编译器并不能帮我们发现错误。

你可能感兴趣的:(Objective-C getter 函数指向空实现会怎么样)