开发中GET的技能点

说明:本文记录一些开发中遇到的小技能点,如果你有更好的方法还望不吝赐教。

UITableView

做为最常用的UI控件,UITableview的人气那是相当的高啊。想象力没有天花板的设计大大(maybe产品菊苣)已经玩出了花(bian)样(tai)。下面来看一下如何满足他们。

  1. 和cell等宽的分割线
  • iOS7的话,一句搞定(iOS7以上的话只有空cell的分割线才会顶到头部)
    cell.separatorInset = UIEdgeInsetsZero;
    //如果全部cell都要这样 可这样设置
    self.tableView.separatorInset = UIEdgeInsetsZero;//就像tableview的rowHeight一样
  • 哪有只支持iOS7的公司,so
    //这两个属性均为Available in iOS 8.0 and later
    cell.preservesSuperviewLayoutMargins = NO;
    cell.layoutMargins = UIEdgeInsetsZero;
  1. zPosition属性可以明显改变屏幕上图层的顺序,但不能改变事件传递的顺序(摘自iOS核心动画高级技巧)

GCD

  1. 创建队列并设置优先级
 dispatch_queue_t serialQueue = dispatch_queue_create("com.mapeng.serialqueue", DISPATCH_QUEUE_SERIAL);
dispatch_set_target_queue(serialQueue, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0));```


#其他
1. UUID能够唯一标识每一台设备
  • (NSString *)UUID {
    KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"HuangyibiaoAppID" accessGroup:@"com.huangyibiao.test.group"];
    NSString *UUID = [wrapper objectForKey:(__bridge id)kSecValueData];
    if (UUID.length == 0) {
    UUID = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
    [wrapper setObject:UUID forKey:(__bridge id)kSecValueData];
    }
    return UUID;
    }```
  1. 如果同时重写了属性的getter和setter方法,系统就不会生成对应的ivar。
  • 手动创建 ivar
  • 使用@synthesize propertyName = _propertyName;
  1. @import(模块)
    模块在语义上把框架和import语句封装到了代码中,而不是把框架的内容复制粘贴到代码中。模块会把H个头文件预编译到动态链接库dylib中,并会自动链接,这样就能把编译时间从O(S*H)降低到O(S+H)。需在Build Setting下打开Enable Modules

NSArray

1.按字母顺序排序(Apple's documentation for details)
sortedArray = [anArray sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];

你可能感兴趣的:(开发中GET的技能点)