杂七杂八

网络加载还没有完毕,这时点击返回后调用了加载失败的回调方法

UI种类:

一进入界面的时的默认UI

网络慢时正在加载的UI

网络正常时的UI (有时需要分wifi 、 移动数据)

网络连接失败时的UI

有网/无网,有GPS/无GPS等来回切换时,界面UI的显示情况

若正在执行动画时程序进入后台,再进入前台时要怎么显示




程序一启动就执行main函数,然后再执行UIApplicationMain方法,创建UIApplication对象,和UIApplication的代理对象并设置为他的delegate属性, 代理循环监听事件,程序启动完毕会执行application:didFinishLauchingWithOptions


============================================================


循环利用是个坑:  从缓存池中拿对象时,会把该对象的状态也拿过来,但是这个状态和当前不符合
拿到对象时,一定要检查每一个控件的值或状态是否正常

用Block来实现动画,一般都用这种,头尾式不常用
[UIView animateWithDuration:0.5 animations:^(
…….
)];


运行时验证对象功能

对象会在运行时验证三种重要信息:

  • 它是否是特定类或其子类的实例

  • 它是否响应某个消息

  • 它是否遵守某些协议


interface builder  :编辑storyboard和xib文件的东西就是IB


发消息就是调用方法的意思


监听事件的方法:  (基本控件)addTeget…     代理      通知



数据传递:

顺传用通知   逆传用代理


====================================================================


在ios7中,地方视图控制器不需要上下滚动时,可以去掉向上向下扩展的选项


tintColor:设置左上角的返回键头的颜色

block内部如果引用的对象是强引用,会引发循环引用,内存泄露,解决方法:把要引用的对象定义为弱指针

__unsafe_unretained(或者用__weak) 类 *对象 = xxx;
__weak typeof(xxx) 对象名 = xxx;


UIKit框架中计算尺寸size是算点的数量,CoreGraphics框架中是用像素来计算尺寸size,故UIKit框架用普通图片,CG框架用@2x图片


nil是一个对象指针为空,Nil是一个类指针为空,NULL是基本数据类型为空。
空指针是指该指针未指向一块有意义的内存区。
[NSNull null]通常作为占位符作用
NSNull:在集合对象中,表示空值的对象
copy的使用:

Student *s1 = [s copy];



=================================================================================================================


// ios模拟器的位置 :/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs


// 文档安装位置:/Applications/Xcode.app/Contents/Developer/Documentation/DocSets

//注意点:文件中不能有更高版本的文档,否则只会显示最高版本


Xcode的自定义代码段的文件保存在:
~/Library/Developer/Xcode/UserData/CodeSnippets

怎么抠出别人应用程序中的图片,音视频等文件?
在软件安装后的目录中

mac 系统显示隐藏文件命令是什么??
Mac终端输入命令。显示/隐藏隐藏文件命令如下(注意空格且区分大小写):
显示隐藏文件:defaults write com.apple.finder AppleShowAllFiles -bool true
隐藏文件命令:defaults write com.apple.finder AppleShowAllFiles -bool false
或者
显示隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles  YES
隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles  NO
输完单击Enter键,退出终端,重新启动Finder就可以了重启Finder

NTFS软件注册需要联网吗
拔掉网线,输入product key和序列号,选择线下激活,在弹出的页面中,把注册机最后一行复制过来粘帖到空白输入框


类方法中不能访问成员变量(实例变量),不能用类调用对象方法

 

 类方法的好处和使用场合

 1> 不依赖于对象,执行效率高

 2> 能用类方法,尽量用类方法

 3> 场合:当方法内部不需要使用到成员变量时,就可以改为类方法

 

 可以允许类方法和对象方法同名


继承:

 1.继承的好处:

 1> 抽取重复代码

 2> 建立了类之间的关系

 3> 子类可以拥有父类中的所有成员变量和方法

 


重写:

 1.重写:子类重新实现父类中的某个方法,覆盖父类中同名方法(不需在.h文件中声明,直接在.m文件中实现父类中的同名方法)

 2.注意

 1> 父类必须声明在子类的前面

 2> 子类不能拥有和父类相同的成员变量

 3> 调用某个方法时,优先去当前类中找,如果找不到,去父类中找

 

 2.坏处:耦合性太强


1.继承的使用场合

 1> 当两个类拥有相同属性和方法的时候,就可以将相同的东西抽取到一个父类中

 2> 当A类完全拥有B类中的部分属性和方法时,可以考虑让B类继承A类


 super的作用

 1.直接调用父类中的某个方法

 2.super处在对象方法中,那么就会调用父类的对象方法

   super处在类方法中,那么就会调用父类的类方法

 

 3.使用场合:子类重写父类的方法时想保留父类的一些行为


 多态

 1.没有继承就没有多态

 2.代码的体现:父类类型的指针指向子类对象

 3.好处:如果函数\方法参数中使用的是父类类型,可以传入父类、子类对象

 4.局限性:

 1> 父类类型的变量 不能直接调用子类特有的方法。必须强转为子类类型变量

       后,才能直接调用子类特有的方法,如果调用的是被之类重写的方法,则实际

       调用的是子类的方法


description:在NSLog()方法中用%@打印对象时,会调用该对象的descriprion方法

       默认打印格式:<类名: 对象的内存地址>    如<Person: 0x100202350>
       重写:
       - (NSString *)description {
           return [NSString stringWithFormat:@"age=%i", _age];
       }
      陷阱:千万不要在description方法中同时使用%@和self,否则死循环

dealloc什么时候调用:  对象的retainCount为0时调用



initWithString与stringWithString的异同?  

stringWithString是类方法,返回一个auto-released的指向NSString的指针,所以不需要手工释放(自动释放池会释放它)。
initWithString是对象方法,返回一个指向NSString的指针,同时该对象的retainCount为1,所以需要手工release,否则内存泄露。

相同点:都可以创建一个新的NSString。


代理的使用和协议是分不开的...


字符串拼接:[NSString stringWithFormat:@"%@%@",a,b]
字符串截取:[NSString substringWithRange:NSMakeRange(4,6)];

获取字符串位置:


判断两字符串是否相等:[s1 isEqualToString:s2];

NSArray数组遍历:
1 普通for循环遍历
2 增强for循环遍历   for(NSObject * obj in 数组名){ NSLog(@"%@",obj); }

遍历可变长度数组的时候,不能动态改变数组长度(增,删元素);

NSDictionary遍历:
先取出所有key,再根据key取出每个value


把数据独立出来:放网络上 or 放在文件(如.plist文件)里



成员变量作用域:


 @public : 在任何地方都能直接访问对象的成员变量

 @private : 只能在当前类的对象方法中直接访问(@implementation中定义的变量默认是@private)

 @protected : 只能在当前类及其子类的对象方法中直接访问(@interface中默认就是@protected)

 @package : 只要处在同一个框架中,就能直接访问对象的成员变量

 

 @interface和@implementation中不能声明同名的成员变量



UIViewController和UIView的关系?

前者负责创建和销毁后者,并可以监听处理后者中的按钮的事件等


程序的运行过程?

程序一启动就读取main.storyboard文件,并创建箭头所指的控制器和控制器内部的view,还有view的子控件,再把view现实在屏幕上


storyboard:描述软件界面  iOS5以后都用这个

xib:描述软件局部界面  iOS5之前用这个



=======================================

让某些文件运行在非ARC机制下


在ARC环境下,用 -fno-objc-arc 来标识哪些文件不使用ARC机制,对于很多第三方库来说很有用,能让我们顺利通过过渡期。


-f-objc-arc


-fno-objc-arc



==================================================

SEL 用法:

SEL s2 =@selector(call:);

[pero performSelector:s2withObject:@"7897655"]; // 后面一个是所调用的call:方法的参数



=======================================


//C语言字符串转换成 OC中的字符串对象

NSString * str = [NSStringstringWithUTF8String:"123abc"];


========================================


// 去除字符串中的所有空格(包括左右两边和中间的空格)

NSString *string =@"  Hello  this  is a long   string!   ";

// 去除左右空格

string = [string stringByTrimmingCharactersInSet:[NSCharacterSetwhitespaceAndNewlineCharacterSet]];

// 把字符串中的空格替换成空

string = [string stringByReplacingOccurrencesOfString:@" "withString:@""];



//从给定的索引值开始(包含该索引位置),一直截取到字符串末尾

NSString * str = [str substringFromIndex:4];

        

//从位置0开始,到给定的索引位置(不包含该索引位置)

NSString * str = [str substringToIndex:4];


// 从第4个字符开始(包含第4个字符), 截取6个字符

NSString * strtmp3 = [str substringWithRange:NSMakeRange(46)];

        

//获得子字符串的位置

//tempRange.location == NSNotFound表示没有找到子字符串出现的位置

NSRange tempRange = [str rangeOfString:@"abc"];


== isEqualTostring比较两个字符串的区别

1. == 号比较的只是两个字符串的指针地址是否相等

2.isEqualTostring 是先比较字符串的指针地址是否相等,如果不等再取出两个字符串中每个字符逐个比较


//可变长度字符串, 继承自NSString

NSMutableString * strMut = [NSMutableStringstring];

        

//相当于初始化字符串对象的值

[strMut setString:@"AAA"];


//在字符串末尾追加新的字符串

[strMutappendString:@"BBB"];



//循环遍历数组时,不能动态的删除/添加元素,以下写法错误

for (NSString * strin array)

{

    [array removeObjectAtIndex:1];

   NSLog(@"str %@",str);

}









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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值