防止Block的迴圈引用(技巧)
阿新 • • 發佈:2018-12-30
技巧1:
__weak typeof(self)weakSelf=self;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
__strong typeof(weakSelf)strongSelf=weakSelf;
[strongSelf doSomething];
});
weakSelf是為了block不持有self,避免迴圈引用,而再宣告一個strongSelf是因為一旦進入block執行,就不允許self在這個執行過程中釋放。block執行完後這個strongSelf會自動釋放,沒有迴圈引用問題。
技巧2 查詢字串是否包含 另一字串
NSString *string = @"1234567890987654321qwertyuiop"; NSRange range1 = [string rangeOfString:@"rty"]; if (range1.length > 0) { NSLog(@"{字串中“rty”的位置,長度}==%@",NSStringFromRange(range1)); } //判斷在一串字串中是否找到某個字串 NSRange range2 = [string rangeOfString:@"abc"]; if (range2.location != NSNotFound) { NSLog(@"找到了@“abc”這個字串!"); }else{ NSLog(@"沒找到!"); }