分类里添加扩展

来源:4-2 分类相关面试问题-1

贴膜小哥

2019-08-07

#import "NSObject+A.h"

@interface NSObject ()
{
    NSString *_inner;
}

@end

@implementation NSObject (A)

- (void)test {
    _inner = @"123";
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        NSLog(@"%@", self->_inner);
    });
}

结果是报错:

Undefined symbols for architecture x86_64:
OBJC_IVAR$_NSObject._inner”, referenced from:
-[NSObject(A) test] in NSObject+A.o
___19-[NSObject(A) test]_block_invoke in NSObject+A.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

扩展是宿主类的所以我在分类里添加扩展在分类里是可以直接使用的 可是直接使用编译期间就报错了 老师能帮忙解释一下吗?谢谢

写回答

1回答

于海

2019-09-01

详见课程中扩展描述,已说明不能为系统类添加扩展
//img.mukewang.com/szimg/5d6b29c908d8e74915001500.jpg

0
0

资深大牛带你深度剖析ios高级面试

从BAT/TMD名企真题入手,结合源码及应用,构建完整iOS知识体系

1749 学习 · 600 问题

查看课程