Block makes a point of attention
After iOS launches block, Apple is highly recommended for developers. However, memory problems may occur.
You can add the following macros:
#ifndef weakify#if__has_feature (OBJC_ARC)#defineWeakify (x) \_pragma ("clang Diagnostic Push") _pragma ("clang diagnostic ignored \ "-wshadow\"") autoreleasepool{} __weak __typeof__ (x) __weak_# #x # #__=x; _pragma ("clang Diagnostic Pop")#else#defineWeakify (x) \_pragma ("clang Diagnostic Push") _pragma ("clang diagnostic ignored \ "-wshadow\"") autoreleasepool{} __block __typeof__ (x) __block_# #x # #__=x; _pragma ("clang Diagnostic Pop")#endif#endif#ifndef strongify#if__has_feature (OBJC_ARC)#defineStrongify (x) \_pragma ("clang Diagnostic Push") _pragma ("clang diagnostic ignored \ "-wshadow\"") Try{}@finally{} __typeof__ (x) x =__weak_# #x # #__; _pragma ("clang Diagnostic Pop")#else#defineStrongify (x) \_pragma ("clang Diagnostic Push") _pragma ("clang diagnostic ignored \ "-wshadow\"") Try{}@finally{} __typeof__ (x) x =__block_# #x # #__; _pragma ("clang Diagnostic Pop")#endif#endif
When used:
@weakify (self); = ^{ @strongify (self); NSLog (@ "aviewcontrolleraviewcontroller%@", self); };
Block makes a point of attention