define YRWeakObj(o) autoreleasepool{} __weak typeof(o) o##Weak = o; define YRStrongObj(o) autoreleasepool{} __strong typeof(o) o = o##Weak;