1.使用FMDB处理常量变量数据时,必须要把数据封装成对象,否则程序会崩溃报错。例如我想把一个BOOL值存进数据库时,需要做这些操作:
-(BOOL) insertNewModelDataToDatabase:(flower *)flower { FMDatabase *db = [FMDatabase databaseWithPath:self.databasePath]; if(![db open]) return NO; int isNotification = (flower.needNotification)? 1:0; BOOL success = [db executeUpdate:@"INSERT INTO flowers (name, soil, date, time, pic, noti) VALUES (?, ?, ?, ?, ?, ?)", flower.name, flower.soil, flower.date, flower.time, flower.pic, [NSNumber numberWithInt:isNotification]]; [db close]; if (!success) NSLog(@"%@", [db lastErrorMessage]); return YES; }
2.如何消除UITableviewCell的分割线的空白,添加以下代码:
#pragma mark 显示完整分割线(消除左空白) - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { if ([cell respondsToSelector:@selector(setSeparatorInset:)]) { [cell setSeparatorInset:UIEdgeInsetsZero]; } if ([cell respondsToSelector:@selector(setLayoutMargins:)]) { [cell setLayoutMargins:UIEdgeInsetsZero]; } } - (void)viewDidLayoutSubviews { if ([self.detailTableView respondsToSelector:@selector(setSeparatorInset:)]) { [self.detailTableView setSeparatorInset:UIEdgeInsetsZero]; } if ([self.detailTableView respondsToSelector:@selector(setLayoutMargins:)]) { [self.detailTableView setLayoutMargins:UIEdgeInsetsZero]; } }
UIView比CALayer多的是处理事件的功能。UIView之所以能显示出东西, 是因为其里面有一个CALayer图层。所以如果要根用户交互用UIView.如果不需要交互,CALayer性能会更高。
4.UIView详细的显示过程
view.layer会准备一个Layer Graphics Context(图形上下文)并传给view.layer.delegate的drawLayer:inContext.所以View其实只是图层的代理, 当图层需要显示的时候。会调用drawLayer:inContext:方法。
而这个方法中, 如果代理存在, 又会调用delegate的drawRect:(CGRect)rect方法来绘制到图层上。
所以View上的drawRect所画的东西都会绘制到view.layer上面系统再将view.layer内容拷贝到屏幕, 完成view的显示。转载于:https://www.cnblogs.com/mysaya/p/4612625.html
相关资源:深度学习word2vec学习笔记