iOS开发的一些小Tips

  1. 用object_setIvar()给类的私有变量赋值

    @interface TestViewController ()
    {
       NSSting *_testString;
       int _testNum;
       BOOL _testBool;
    }
    @end
    

赋值时:

   //NSSting 类型的
   Ivar strIvar = class_getInstanceVariable([self class], "_testString");
   object_setIvar(self, strIvar, "testStrValue");

   //基本数据类型的
   Ivar intIvar = class_getInstanceVariable([self class], "_testNum");
   int tempInt = 123;
   object_setIvar(self, strIvar, (__bridge id)(*(void **)&tempInt));

   Ivar boolIvar = class_getInstanceVariable([self class], "_testBool");
   BOOL tempbool = YES;
   object_setIvar(self, strIvar, (__bridge id)(*(void **)&tempbool));
  1. iOS可变参数应用
    -(id)initWithTitles:(NSString *)titles,... NS_REQUIRES_NIL_TERMINATION
    {
    self = [super init];
    if(self)
    {
    va_list args;
    va_start(args, titles);
    for(NSString *arg = titles; arg != nil; arg = va_arg(args, NSString *))
    {
    if (arg) {
    NSLog("title = %@", arg);
    }
    }
    va_end(args);
    }
    return self;
    }
    宏NS_REQUIRES_NIL_TERMINATION表示可变参数是以nil为结束符。
    以上代码会把可变参数一一打印出来。

  2. UITableViewStyleGrouped模式下间距tip

    去除顶部的header:
    //去除UITableViewStyleGrouped上边多余的间隔
    _tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, CGFLOAT_MIN)];
    
    section的header和footer处理:

    Group模式每个section之间的间隔都由header和footer组成,所以要去掉,需要把header和footer都去掉:

    // 隐藏UITableViewStyleGrouped下边多余的间隔
    - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
        return CGFLOAT_MIN;
    }
    - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
        return CGFLOAT_MIN;
    }
    

持续更新...

你可能感兴趣的:(iOS开发的一些小Tips)