iOS新技术

来源:互联网 发布:怎样在淘宝分期付款 编辑:程序博客网 时间:2024/05/02 04:34
1.tableView的cell定位.目的:插入单元格   NSIndexPath *indexPath = [NSIndexPath indexPathForRow:self.dataSource.count-1 inSection:0];   [self.tableView insertRowAtIndexPaths:@[indexPath] withRowAnimation];2.tableView内容多可以自动滚动 [tableView scrollToRowAtIndexPath:indexPathatScrollPosition:UITableViewScrollPositionBotton animated:YES];3.刷新单个单元格 [tableView reloadRowsAtIndexPaths:@[indexPath]withRowAnimation:UITableViewRowAnimationFade];4.imageWithName:相当于在内存中存了一张图片,如果要经常访问就用该方法。 而, imageWithContentOfFile,没有写入内存, 只显示一次,其路径为:[NSString *imgPath = [NSBundle mainBundle] pathForResouce:@”4”ofType:@”jpg”];5.各种传值  5.1 属性传值 前一个页面引入头文件 - 创建下一个页面 - 赋值 - 下一面直接调用  5.2 代理传值   5.3 block传值, 后页面(.h中写协议,方法,属性; .m中写方法判断) 前一个页面(遵守协议, 指定关系,调用传过来的值,方法实现)  5.4 单列传值,独立创建一个类Box       @interface Box : NSObject        //1.类⽅方法        //2.返回值: 当前类        //3.⽅方法名: main/default/shared + 类名        + (Box *)defaultBox;        @property (nonatomic, copy)NSString *string;//只有写属性, 才能⽤用     + (Box *)defaultBox {       static Box *box = nil;//初始化⼀一次, 静态区, 默认为0       if (box == nil) {       box = [[Box alloc] init];       }      return box;}   //存⼊入箱⼦子Box *box = [Box defaultBox];box.string = textField.text; //从箱⼦子⾥里取内容Box *box = [Box defaultBox];self.navigationItem.title = box.string;6.在后台看运行时,NSLog打印来看,如果东西比较多,可以采用++++++,等其他方法分割; 双下划线FUNCTION双下划线 看走到那个方法中了。加断点最为常见。7.计算高度 //计算⾼高度//参数1: 容器⼤大⼩小, 必须保证其中⼀一个固定, 不确定就写0//参数2: 计算⽅方式, ⾏行间距 + ⾏行⾼高//参数3: 字体样式,//参数4: 上下⽂文, ⽤用于传值NSDictionary *dic = @{NSFontAttributeName:[UIFontsystemFontOfSize:17]};CGRect rect = [string boundingRectWithSize:CGSizeMake(335, 0)options:NSStringDrawingUsesLineFragmentOrigin |NSStringDrawingUsesFontLeading attributes:dic context: nil];//最终只要 rect 的⾼高度8.将不同类型的数据类型放在一起, 结构体  struct girl {int age;  char name[20]; float height;}; 一般都是采用重命名,typedef 数据类型 新类型名;比如:typrdef  int  AAA; typedef struct {int age;  char name[20]; float height;} Girl;9. 垃圾回收机制: gc, garbage collection, iOS没有垃圾回收机制,通过引⽤用计数(retain count)管理内存; //内存管理的原则//1.引⽤用计数+1的操作(alloc, retain, new) 和 引⽤用计数-1的操作(release, autorelease) 的次数相同//2.谁创建, 谁释放; 想使⽤用, 先持有//3.当对象引⽤用计数为0时, 不能再使⽤用该对象, 否则会变成僵⼫尸对象//4.当对象不再使⽤用时, 应及时释放该对象10.关于拷贝11.- (id)copyWithZone:(NSZone *)zone {//1.伪拷贝  return [self retain];//2.浅拷贝 Dog *dog = [[Dog alloc] init];  dog.name = self.name; dog.age = self.age; return dog;//3.深拷贝Dog *dog = [[Dog alloc] init]; dog.name = [self.name copy];dog.age = self.age; return dog;}11. 关于不同的属性setter和getter方法 //assign, ⽣生成的setter和getter- (void)setAge:(NSInteger)age {_age = age;}- (NSInteger)age {return _age;}//retain, ⽣生成的setter和getter- (void)setName:(NSString *)name {if (_name != name) {[_name release];_name = [name retain];}}- (NSString *)name {return _name;}//copy, ⽣生成的setter和getter- (void)setGender:(NSString *)gender {if (_gender != gender) {[_gender release];_gender = [gender copy];}}- (NSString *)gender {return _gender;}12. 发送请求与服务器 请求参数:NSMutableDictionary *params = [NSMutableDictionary dictionary]; Params[@”a”] = @”list”; 等等参数,都是根据API接口数据 发送请求给服务器,加载数据,[AFHTTPSessionDataTask manager] GET:@”http:api.budajie.com/api/api_open.php”parameters:params success:^(NSURLSessionDataTask *task, id resonseObject)13. 提醒,除了用UIAlert, 还可以用[SVProgressHUD showErrorWithStatus:”加载失败”]14. TableView的每个cell连接服务器,发送请求以及从服务器中获取数据,底部的状态要经常使用。 - (void) checkFooterState { if(count == total) { self.userTableView.footer noticeNoMoreData];} else { [self.userTableView.footer endRefreshig];}}15.点击不同的控件,也就是发送了很多的请求,但是最后只要最后一个请求,这是用到:self.Params = params; if(self.Params != params) return;16.控制器的销毁,就是点击返回按钮,停止命令;AFH请求管理者,AFHTTPSessionManager*manager调用 -(void) dealloc { self.manmager.operationQueue cancelAllOperations];17.View之间,如果上面的view挡住下面的view时,这是可以将上面的view设置成clear颜色(透明色)18.数据请求需要根据公司提供的服务器接口,如果是page,那么每次上拉刷新和下拉刷新,只能通过删除以前数据(比较浪费流量);而如果接口数据提供给的是id,那么只需要将最大的id放在最上面就可以了。后面的旧数据不用改变。19.不希望别人请已修改自己的cell尺寸, 可以重写setFrame方法以及setBounds方法20.可以使用ppt来自己为view打草稿画图,21.textFieldShouldReturn,点击键盘换行按钮就会调用这个方法。退出键盘:[self.view endEditing:YES]  或者是[textField resignFirstResponer]22.控制键盘的输入形式:(比如表情键盘) 设置键盘顶部工具,self.textField.inputAccessoryView23.键盘上面的工具条可以使用: toolBar控制器  具体的运用如下:24.调用一些方法的时候,可以直接输入方法名,比如、;懒加载(lazy),等等只要输入’-’或者’+’方法名就可以了。   25. 遍历所有的view ,通过forin26.键盘弹出会调用textFieldDidBeginEditing27.防止代码重复,就需要对一些数据进行封装。封装的思想28.有些控制器会有两个代理,比如UIToolBar, 如何解决。29.瀑布流的思路:每次添加都再找最短的,并且是在UICollectionView里面操作。(里面的图片位置不同,大小不同。)30.textField时刻的变化,要想到其响应者的关系。(并且textField也有placeHolder的相关属性)31.登录时,使用KVC来完成32.登录注册占位符
0 0
原创粉丝点击