觅食邦 开发总结

XIB 加载要点

  • 通过xib加载view会调用- (void)awakeFromNib方法
  • xib加载view,点击view触发事件 - (void)setSelected:(BOOL)selected animated:(BOOL)animated

判断字符串是否纯数字

+ (BOOL)isPureInt:(NSString *)string{
    NSScanner* scan = [NSScanner scannerWithString:string];   
    int val;
    return [scan scanInt:&val] && [scan isAtEnd];
}

参数越界报错

'NSInvalidArgumentException', reason: '-[NSInvocation setArgument:atIndex:]: index (2) out of bounds [-1, 1]'
*** First throw call stack:  
  • 其中NSInvocation代表回调,调用的意思,一般值调用某种方法,setArgument:atIndex代表某种参数。
  • 这个报错意思是参数越界

AFN知识补充

  • block 强引用
[AFHTTPSessionManager manager]GET:<#(nonnull NSString *)#> parameters:<#(nullable id)#> progress:<#^(NSProgress * _Nonnull downloadProgress)downloadProgress#> success:<#^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject)success#> failure:<#^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error)failure#>
  • 如果使用强引用的block 访问外部对象,则只要执行完block代码才会挂掉,比如用户在网络还没读完数据就退出界面,block中的网络读取还会继续进行
  • 解决方法: __weak typeof(self) weakSelf = self;
  • 取消请求
[AFHTTPSessionManager manager] invalidateSessionCancelingTasks:YES];

设置圆形图片

  • 可以扩展uiimage简化代码
  • 利用Quartz 2D

    // 开启图形上下文
    UIGraphicsBeginImageContext(self.size);
    
    // 上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    
    // 添加一个圆
    CGRect rect = CGRectMake(0, 0, self.size.width, self.size.height);
    CGContextAddEllipseInRect(ctx, rect);
    
    // 裁剪
    CGContextClip(ctx);
    
    // 绘制图片
    [self drawInRect:rect];
    
    // 获得图片
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    
    // 关闭图形上下文
    UIGraphicsEndImageContext();

button 取消高亮状态

  • 可以使用UIControlStateDisabled属性
  • 可以重写UIBUtton的setHightlight方法,但是不使用super方法,这样button不会对button进行高亮处理

包含字符串

[字符串 containString:@”“] 判断字符串是否包含某个字符串,不指定位置,返回值为BOOL
[字符串 hasSuffix:@”“] 判断字符串是否以某字符串结尾,
[字符串 hasPrefix:@“”] 判断字符串是否以某字符串开头

你可能感兴趣的:(觅食邦 开发总结)