iOS 开发遇到的小问题总结

  1. 表格尾部视图去除多余的cell:

    _tableView.tableFooterView = [UIView new];
    
  2. 字典快速转换成模型的方法,模型的属性名要和字典的键一样

     ArticleModel * model = [[ArticleModel alloc]init];
     [model setValuesForKeysWithDictionary:dict];
    
  3. 字符串数据转成数组或字典

     NSData * jsonData = [jsonStr dataUsingEncoding:NSUTF8StringEncoding];
      NSMutableArray * jsonArr = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:nil];
    
  4. block里面的self必须转化成弱对象,防止强引用造成内存泄露

     __weak typeof(self) weakSelf = self;
    
  5. 在跳转页面时隐藏底部的tabbar的方法是

     VC.hidesBottomBarWhenPushed = YES
    
  6. 属性初始化能用懒加载的就用懒加载,懒加载就是在需要的时候才初始化,不会一开始就占着空间

  7. 要添加新版本的真机测试包时就把下载到的包安装到该路径下
    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport

  8. UITableView UICollectionView UITextView 等等是UISCrolleView的子类且放在导航控制器中,内容自动向下64

     self.automaticallyAdjustsScrollViewInsets = NO;
    
  9. 单例的写法

     + (instancetype)shareLocation
     {
         static GPLocationTool *location;
         static dispatch_once_t onceToken;
         dispatch_once(&onceToken, ^{
             location = [[GPLocationTool alloc] init];
         });
         return location;
     }
    
  10. 使用JsonModel类的时候,解决属性名不对应的方法

    //属性名称不对应时调用的方法
    +(BOOL)propertyIsOptional:(NSString *)propertyName{
        return YES;
    }
    
  11. tabbar用设置的图片,不被tincolon渲染,方法是设置图片的模式为原图片

readVC.tabBarItem = [[UITabBarItem alloc] initWithTitle:titles[0] image:[array[0] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] selectedImage:[selectedArray[0] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];
  1. Xcode8控制台不打印NSLog原因可能有:
    1.Xcode8的Product -> Scheme -> Edit Scheme -> Run -> Arguments -> Environment Variables,添加的“OS_ACTIVITY_MODE”值为“disable”,取消了勾选。
    2.NSLog宏定义有问题。
    3.Xcode底部控制台窗口未打开

  2. 图片拉伸的方法

     //设置气泡图片
            UIImage * image = [UIImage imageNamed:@"chatto_bg_normal.png"];
            //拉伸图片,纵向拉伸,无限复制51像素位置
            //第一个参数:当需要横向拉伸的时候,就复制image.size.width/2+1像素
            //第二个参数:当纵向需要拉伸的时候,就复制第51像素的位置
            image = [image stretchableImageWithLeftCapWidth:image.size.width/2 topCapHeight:50];
            _talkBgImageView.frame = CGRectMake(70, 10, 180, rect.size.height +10);
            _talkBgImageView.image = image;
    

或者是

  //设置背景图片
       image = [[UIImage imageNamed:@"气泡"] resizableImageWithCapInsets:UIEdgeInsetsMake(15, 21,16, 20)];

你可能感兴趣的:(iOS基础知识)