123ee705aSDave Lee#include <objc/NSObject.h> 223ee705aSDave Lee 323ee705aSDave Lee@interface Classic : NSObject { 423ee705aSDave Lee@public 523ee705aSDave Lee int _ivar; 623ee705aSDave Lee} 723ee705aSDave Lee@end 823ee705aSDave Lee 923ee705aSDave Lee@implementation Classic 10*6c599b1eSDave Lee- (void)fun { 1123ee705aSDave Lee // check self 1223ee705aSDave Lee} 13*6c599b1eSDave Lee 14*6c599b1eSDave Lee- (void)run { 15*6c599b1eSDave Lee __weak Classic *weakSelf = self; 16*6c599b1eSDave Lee ^{ 17*6c599b1eSDave Lee Classic *self = weakSelf; 18*6c599b1eSDave Lee // check idiomatic self 19*6c599b1eSDave Lee 20*6c599b1eSDave Lee // Use `self` to extend its lifetime (for lldb to inspect the variable). 21*6c599b1eSDave Lee [self copy]; 22*6c599b1eSDave Lee }(); 23*6c599b1eSDave Lee} 2423ee705aSDave Lee@end 2523ee705aSDave Lee 2623ee705aSDave Leeint main() { 2723ee705aSDave Lee Classic *c = [Classic new]; 2823ee705aSDave Lee c->_ivar = 30; 2923ee705aSDave Lee [c fun]; 30*6c599b1eSDave Lee [c run]; 3123ee705aSDave Lee} 32