iOS开发笔记(三)

1NSRunLoop运行循环机制负责监听处理所有的事件。


2、关闭隐式动画

    [CATransaction begin];

    [CATransaction setDisableActions:YES];

    [CATransaction commit];


3、函数重载

定义:函数名相同,函数类型不同 

func sum(num1:Int ,num2:Int) ->Int {

return num1 + num2;

}

fun sum(num1:Int, num2:Int, num3:Int) ->Int{

return num1 + num2 + num3;

}

顺便说说其他函数 1、全局函数:在全局作用域中定义的函数;2、嵌套函数:在某个函数体中定义的函数。它的作用域仅限于定义嵌套函数的函数体内部。

4、调整tableviewseparaLine线的位置

    self.tableView.separatorInset = UIEdgeInsetsMake(0,100, 0, 0);


5、怎么解决内存泄漏

     > 使用analyze进行代码的静态分析

     > 多人开发 尽量用arc 


6、从info.plist获得版本号

    NSString *key = @"CFBundleVersion";

    // 当前软件的版本号(从Info.plist中获得)

    NSString *currentVersion = [NSBundle mainBundle].infoDictionary[key];


7scrollview不自动调整inset

    self.automaticallyAdjustsScrollViewInsets = NO;

    self.edgesForExtendedLayout = UIRectEdgeNone;

    

8、属性

>存储属性:值存储在对象(.实例)中的变量或常量。lazy延迟属性(让某些资源用到时再去加载,避免资源的浪费)

> 计算属性:提供getset

>类型属性:用class关键字修饰的属性,就是类型属性,也称类属性。类的多个实例对象都共享唯一的一份。不需要创建实例对象,可以用类名访问属性。


注意:一个属性不能既是存储属性又是计算属性。class修饰的类型属性只能是计算属性,不能是存储属性



9、当选中cell,系统就会调用这个方法

- (void)setSelected:(BOOL)selected animated:(BOOL)animated



10、类和对象

类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。


11、方法

类方法:用类名调用

对象方法:用创建的对象实例调用(访问属性时调用)


12、构造方法

定义:当一个对象创建完后都需要调用构造方法进行初始化(存储属性的初始化、构造方法的初始化)

特点:方法名是init、没有func关键字、没有返回值


13、析构方法

定义:一个对象被释放前,析构方法会立即被自动调用

作用:进行资源的释放

注意:不允许主动调用、每个类最多只能有一个析构方法



14、人为的滑动scrollview,等到手拖拽结束后,就会调用scrollview代理方法

 - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView


15、当当前的view加载到父控件的时候调用

调用该方法:-(void)didMoveToSuperview



16、可选类型(some+none)

当一个值可能存在,可能不存在的时候就用可选类型


17、强制解包(拆包)

使用感叹号!将可选类型(包装)的值取出来

注意:进行强制解包之前,一定要先检测可选类型(包装)的值是否存在


18、选择绑定

概念:将可选类型的值有选择地赋给临时常量\变量。

作用:如果值存在,就把该值赋给临时常量\变量,否则就不创建常量\变量


19、如果服务器仓库的代码被修改了再提交代码会报错fetch first

 解决措施:Source control —>pull 重新更新项目新增内容


20 JS调用OC总结

1、第一种 通过UIWebView代理拦截URL

2、第二种 

  导入#import <JavaScriptCore/JavaScriptCore.h> 

   a. block方式

  主要通过拿到JS的执行环境 JSContext *context = [self.webView       valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];

 context[ html的方法名() ] = ^(){       

    };


  b. 遵守JSEport协议方式

JS:onclick = "change.callChangeColor()"


  JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];

    [context setObject:self forKeyedSubscript:@"change"];

// 遵守遵守JSEport协议 实现定义代理方法

- (void)callChangeColor()



21OC调用JS总结

第一种.通过UIWebViewstringByEvaluatingJavaScriptFromString方法

第二种.获得WebView的运行环境的对象JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];

然后用context执行evaluateScript:JS里面的方法


22、防止用户重复狂点按钮, 在0.2秒后再执行

[[self class]  ancelPreviousPerformRequestsWithTarget:self selector:@selector(todoSomething:) object:btn]; 

[self performSelector:@selector(todoSomething:) withObject:btn afterDelay:0.2f];

23、+load():和+initialize()

+load():通常用来进行method swizzle,尽量避免过于复杂以及不必要的代码

+initialize():一般用于初始化全局变量或静态变量



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值