1. 程式人生 > >防止Block的迴圈引用(技巧)

防止Block的迴圈引用(技巧)

技巧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(@"沒找到!");
    }