蓝懿ios 技术内容交流和心得分享10.31

  今天又到练习日  感觉最近这几天学的东西挺多的  我们一起再来复习一下;

 

  •        需要重点掌握的知识点
  • 变量:

变量的声明和赋值   类型 变量名称 = 值;

  • 基本数据类型:

int float double long longlong char short BOOL

  • 运算符:

+ - * / % ++ — += -= *= /= %=

  • 比较运算符:

> < = != >= <= ==

  • 逻辑判断:

if  else if  else   switch   三目表达式

  • 循环:

for     while     do while    break  continue  return

  • 方法:

方法声明  对象方法  -(返回值类型)方法名称With参数介绍:(参数类型)参数名称 and参数介绍:(参数类型)参数名称{     return ;}

  • 面向对象:

类方法:+开头 通过类名调用 不能使用self  调用简单工厂方法:类方法的一种  用来创建对象的  方法名称以类名开头[NSArray arrayWith……];封装继承多态

UILabel  UIButton  UITextFiled UIImageView

内存管理

ARC

:自动内存管理

MRC

:手动内存管理内存计数机制:内存计数表示当前对象被引用的次数,如果引用次数为0 则对象会从内存中释放掉retain会对内存计数+1release会对内存计数-1retain(strong)assign(weak)copy对set方法的影响:retain:两件事1.把原来的释放 2把新的retain+1assign:直接赋值copy:调用copy并赋值dealloc方法 当对象内存计数为0时会释放内存 释放之前会调用此方法 在arc中用来验证对象没有有释放掉

 

  • 如果是retain strong set方法做了下面这些事 两件事 1.把原来的释放 2.把新的+1这个只能用于对象
  • 如果是

assign weak set方法做了1件事  直接赋值这个用于非对象

  • 如果是copy set

方法做了1件事 直接调用copy

  • 以后在写属性对象方法的格式@property(

nonatomic,strong) NSMutableArray *myArray;

  • 非对象方法的格式@property

(nonatomic,weak)int x;

常见错误​

1.[ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key resultLabel.出错原因:sb控件和代码关联出错解决方案:找到相对应的页面的黄色圆点(ViewController)在此上面右键 删除 黄色叹号2.<__NSArrayM: 0x7c0320b0> was mutated while being enumerated.出错原因:forin循环时修改了数组 但继续循环了解决方案: 修改数组后 加break或return3.-[__NSArrayM objectAtIndex:]: index 3 beyond bounds [0 .. 0]'出错原因:数组角标越界解决方案:角标的取值 要小于数组的count4.-[ViewController addZombX]: unrecognized selector sent to instance 0x79174e00'出错原因:在ViewController中找不到方法

解决方案:在某个类中没有实现这个方法  或者是对象类型错了

​字符串

在编程

过程中很多时候需要拼接字符串。在使用FMDB管理sqlite数据库,手写的SQL语句总是要拼接字符串。

各种语言有不同的字符串拼接方式,java

 、c++等语言字符串拼接最为简单,直接使用“+”就搞定了。例如"select * from " + tablename + “where id=” + id 但是使用OC恶心的语法写出的代码也非常恶心。下面总结下

方法一、使用 stringWithFormat 格式化字符串

NSString*sql = [NSString stringWithFormat:"select * from %@ where id='%@'",tablename,id];

方法二、使用stringByAppendingString

NSString*sql = [[[[@"select * from " stringByAppendingString:tablename] stringByAppendingString:@"where id='"]stringByAppendingString:id]stringByAppendingString:@"'"];

或者

NSString*sql

= [@"select * from " stringByAppendingString:tablename]; sql = [sql stringByAppendingString:@"where id='"]; sql = [sql stringByAppendingString:id]; sql = [sql stringByAppendingString:@"'"];

方法三、使用stringByAppendingFormat 这个是把方法一和方法二结合结合起来的一个方法。

一直想找个好的方法,既直观又方便。

甚至还想到用宏。

#define _SQL(x)  #x  #define SQL(x)   _SQL(x)

可惜所有的表名、字段名都要定义为宏,且NULL值不好处理。 最后想到使用不定长参数来拼接字符串,将上面的方法封装起来。

方法四、+ (NSString)NStr:(NSString) str,…

// 拼接字符串  + (NSString*)NStr:(NSString*) str,...  {      if (!str) {          return nil;      }      NSMutableString *ret = [NSMutableString stringWithFormat:@"%@",str];      id          obj = nil;      va_list     args;      va_start(args, str);      while ((obj = va_arg(args, id))) {          if ([obj isKindOfClass:[NSString class]]) {              [ret appendString:obj];          } else {              NSLog(@":WARNING %@ is not a NSString", [obj class]);          }      }      va_end(args);      return ret;  }  // 使用  [类名 NStr:@"select * from ",tableName,@" where id='",id,@"'",nil];

虽然可以拼接字符串了,但是看着还是不怎么直观。

​学习ios  重要还是要理清楚思路  在做或者看老师代码的时候 自己多想想为什么  不要自己看着就抄       另外还是要推荐一下 蓝懿IOS这个培训机构  和刘国斌老师刘国斌老师还是很有名气的,听朋友说刘老师成立了蓝懿iOS,,老师讲课方式很独特,能够尽量让每个人都能弄明白,有的比较难懂的地方,如果有的地方还是不懂得话,老师会换个其它方法再讲解,这对于我们这些学习iOS的同学是非常好的,多种方式的讲解会理解得更全面,这个必须得给个赞,嘻嘻,还有就是这里的学习环境很好,很安静,可以很安心的学习,安静的环境是学习的基础,小班讲课,每个班20几个学生,学习氛围非常好,每天都学到9点多才离开教室,练习的时间很充裕,而且如果在练习的过程中有什么困难,随时可以向老师求助,不像其它机构,通过视频教学,有的甚至学完之后都看不到讲师本人,问点问题都不方便,这就是蓝懿与其它机构的区别,相信在刘国斌老师的细心指导下,每个蓝懿学员都能找到满意的工作,加油!

​                                                                               写博客的第二十一天,

                                                                      QQ 565803433;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值