标签:
在开源代码中我们经常看到如下的代码
#ifndef ASDISPLAYNODE_REQUIRES_SUPER #if __has_attribute(objc_requires_super) #define ASDISPLAYNODE_REQUIRES_SUPER __attribute__((objc_requires_super)) #else #define ASDISPLAYNODE_REQUIRES_SUPER #endif #endif
一直很疑惑
__attribute__((objc_requires_super))
是干嘛用的,今天特地查了下,官网解释如下:
Some Objective-C classes allow a subclass to override a particular method in a parent class but expect that the overriding method also calls the overridden method in the parent class. For these cases, we provide an attribute to designate that a method requires a “call to super” in the overriding method in the subclass.
简单来说就是子类继承父类的某个方法时,如果在父类的该方法后面加了该属性,子类中如果没有调用父类的super方法,编译器则会有告警。
如下图:
标签:
原文地址:http://my.oschina.net/u/734027/blog/425676