-
用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));
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为结束符。
以上代码会把可变参数一一打印出来。-
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; }
持续更新...