- 博客(36)
- 收藏
- 关注
转载 对 block 的理解
Block是一种数据类型,C语言中的匿名函数,可以被当做参数和返回值传递,它是提前准备好的能工作的代码单元,可以在任何需要的时候被执行。 特意小结了下对 block 的一些理解,如下: 一、默认情况下,我们不允许在 block 代码块内部修改外部变量的数值。如果要修改外部定义的变量,我们需要使用__block 关键字进行修饰。 二、使用Blo
2016-04-04 19:59:44 381
原创 关于cell的复用问题? cell的复用机制?
关于cell的复用问题? cell的复用机制?TableView的重用机制,为了做到显示和数据分离,IOS tableView的实现并且不是为每个数据项创建一个tableCell。而是只创建屏幕可显示最大个数的cell,然后重复使用这些cell,对cell做单独的显示配置,来达到既不影响显示效果,又能充分节约内容的目的。下面简要分析一下它的实现原理。重用实现分析 查看UITableVie
2016-03-18 11:48:38 521
原创 UITableView的性能优化? 滑动的时候有种卡的感觉是为什么?怎么解决?
UITableView的性能优化? 滑动的时候有种卡的感觉是为什么?怎么解决? 然而在使用第三方应用时,却经常遇到性能上的问题,普遍表现在滚动时比较卡,特别是table cell中包含图片的情况时。 实际上针对性地优化一下就可以解决tableView滑动的时候卡顿的问题, 在iOS应用中,UITableView应该是使用率最高的视图之一了。iPod、时钟、日历、备忘录、Mail、天
2016-03-18 11:37:27 424
原创 响应者链条-(What is responder chain)
响应者链条-(What is responder chain)事件响应链。包括点击事件,画面刷新事件等。在视图栈内从上至下,或者从下之上传播. 可以说点事件的分发,传递以及处理。具体可以去看下touch事件这块。1> 首先解释响应者链的概念UIResponder类,是UIKIT中一个用于处理事件响应的基类。窗口上的所有事件触发,都由该类响应(即事件处理入口)。所以,窗口上的 View及
2016-03-18 11:35:33 593
原创 关于视图的生命周期
关于视图的生命周期1>.首先判断控制器是否有视图,如果没有就调用loadView方法创建:通过storyboard或者代码;2>.随后调用viewDidLoad,可以进行下一步的初始化操作;只会被调用一次;3>.在视图显示之前调用viewWillAppear;该函数可以多次调用;4>.视图viewDidAppear5>.在视图显示之前调用viewWillDisappear;
2016-03-18 11:33:46 510
原创 UIView、UIWindow和CALayer的理解
对UIView、UIWindow和CALayer的理解UIView: 属于UIkit.framework框架,负责渲染矩形区域的内容,为矩形区域添加动画,响应区域的触摸事件,布局和管理一个或多个子视图UIWindow: 属于UIKit.framework框架,是一种特殊的UIView,通常在一个程序中只会有一个UIWindow,但可以手 动创建多个UIWindow,同时加到程序里面
2016-03-18 11:31:23 382
原创 Swift比Objective-C有什么优势?
Swift比Objective-C有什么优势?1>, Swift 容易阅读不再需要行尾的分号,以及 if/else 语句中围绕条件表达式的括弧。另外就是方法的调用不再互相嵌套成中括号[[[]]]。Swift 中的方法和函数的调用使用行业内标准的在一对括弧内使用逗号分隔的参数列表。这样做的结果就是一种带有简化了句法和语法的更加干净有表现力的语言。2>, Swift 更易于维护Swif
2016-03-18 11:28:59 926
原创 Swift和Objective-C的联系
Swift和Objective-C的联系1> Swift与Objective-C共用同一套运行时环境我们编写程序,让程序运行起来,被机器执行的代码并非全部是由我们自己来编写的。需要同时运行很多预先写好的支持性的代码,才能让我们自己的代码运行起来。程序并非单独存在的,运行时处在一定的环境当中。我总联想到很多小蚂蚁在泥土上面爬,而我自己写的程序只是其中的一只。Swift跟Objective
2016-03-18 11:27:57 343
原创 内存管理的原则
内存管理的原则1> 原则: 1). 只要还有人在使用这个对象, 那么这个对象就不会被回收 2). 只有你想使用这个对象, 那么就应该让这个对象的引用计数器加1 3). 当你不想使用这个对象时, 应该让对象的引用计数器减12> 谁创建, 就由谁来release 1). 如果你通过alloc, new, copy 来创建一个对象
2016-03-18 11:26:50 326
原创 objc使用什么机制管理对象内存(内存管理方式有哪些)
objc使用什么机制管理对象内存(内存管理方式有哪些)1).MRC(manual retain-release)手动内存管理2).ARC(automatic reference counting)自动引用计数3).Garbage collection (垃圾回收)但是iOS不支持垃圾回收, ARC作为LLVM(编译器的架构系统,用c++编写而成的) 3.0编译器的一项特性, 在iOS5.0 (
2016-03-18 11:25:59 2806
原创 static 关键字的作用
static 关键字的作用?分别从函数, 模块, 和类三方面 就static修饰的变量和函数进行说明 : 1> 函数体内 static 变量的作用范围为该函数体,不同于 auto 变量,该变量的内存只被分配一次, 因此其值在 下次调用时仍维持上次的值; 2> 在模块内的 static 全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问; 3> 在模块内的 stat
2016-03-18 11:23:58 269
原创 简述NotificationCenter、KVC、KVO、Delegate?它们之间的区别!!!
KVO(Key-Value- Observing):一对多, 观察者模式, 是键值监听,键值观察机制, KVO的本质是当观察者为一个对象的属性进行了注册,被观察对象的isa指针被修改的时候,isa指针就会指向一个中间类,而不是真实的类。所以 isa指针其实不需要指向实例对象真实的类。所以我们的程序最好不要依赖于isa指针。在调用类的方法的时候,最好要明确对象实例的类名KVC(Key-Value
2016-03-18 11:22:21 1342
原创 readwrite, readonly, assign, retain, copy, nonatomic属性的作用? 什么情况使用copy,assign和retain?
readwrite, readonly, assign, retain, copy, nonatomic属性的作用? 什么情况使用copy,assign和retain?readwrite 是可读可写特性;需要生成getter方法和setter方法; readonly 是只读特性只会生成getter方法 不会生成setter方法 ,不希望属性在类外改变; assign 是赋值特性,se
2016-03-18 11:20:32 1000
原创 Objective-C是动态运行时语言是什么意思?
Objective-C是动态运行时语言是什么意思? (When we call objective c is runtimelanguage what does it mean?)主要是将数据类型的确定由编译时,推迟到了运行时。这个问题其实浅涉及到两个概念,运行时和多态。简单来说, 运行时机制使我们直到运行时才去决定一个对象的类别,以及调用该类别对象指定方法。多态:不同对象以自己的方式响应 相
2016-03-18 11:19:51 926
原创 c和obj-c如何混用?
1. c和obj-c如何混用? 1)obj-c的编译器处理后缀为m的文件时,可以识别obj-c和c的代码,处理mm文件可以识别obj-c,c,c++代码,但cpp文件必须只能用c/c++代码,而且cpp文件include的头文件中,也不能出现obj- c的代码,因为cpp只是cpp。 2) 在mm文件中混用cpp直接使用即可,所以obj-c混cpp不是问题 3) 在cpp中混用o
2016-03-18 11:18:00 369
原创 static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
1. static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?1) 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件
2016-03-18 11:16:37 435
原创 堆和栈的区别是什么?
1. 堆和栈的区别是什么?1> 管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制;对于堆来说,释放工作由程序员控制,容易产生内存泄露 (memory leak)。2> 申请大小: 栈:在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存的区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的,在Windows下,栈的大小是2M(也有的说是1M,总
2016-03-18 11:15:35 328
原创 self.navigationItem.backBarButtonItem 的title设置
self.navigationItem.backBarButtonItem 的title设置新写的App中需要使用UINavigationController对各个页面进行导航,但由于第一级页面的title较长,在进入第二级页面后返回按钮leftButtonItem的title就会变得很长,对NavigationBar空间占用很大,而且不美观,于是使用代码对leftButtonIt
2016-03-16 10:21:51 1230
原创 self.navigationItem和self.navigationController.navigationItem的区别?
self.navigationItem和self.navigationController.navigationItem的区别?**********************************************self.navigationItemself.navigationController.navigationItemself.navigationContro
2016-03-16 10:06:48 1807
原创 swift 构造函数(重载)
构造函数-02-重载 /// 属性就是用来变化的 var var name: String /// 重写 - 覆盖父类的方法// override init() {// name = "zhang"// // super.init()// } /// 函数重载,
2016-03-12 16:42:27 340
原创 swift 构造函数(必选参数)
构造函数-01-必选参数 构造函数:给属性分配空间 alloc 初始化数值 init/initWithXXX Swift 中只有 init 分配空间是给属性分配空间class Person: NSObject { // 1. Class 'Person' has no initializers // Person 类 没有构造器 如
2016-03-12 16:41:19 520
原创 swift 面向对象(懒加载)
面相对象--懒加载 /// 懒加载 lazy var person: Person? = Person() /// 懒加载的闭包实现代码 lazy var person2 = { ()->Person? in return Person() }() override func viewDidLoad() {
2016-03-08 17:35:56 251
原创 swift 闭包的使用2(代码)
闭包使用class ViewController: UIViewController { let demoView = UIView(frame: CGRect(x: 10, y: 20, width: 100, height: 100)) override func viewDidLoad() { super.viewDidLoa
2016-03-08 17:34:12 186
原创 swift 闭包的使用 1 (代码)
/// 简单闭包,如果没有参数,没有返回值 let simpleClosure = { print("hello world") } // MARK: - 闭包定义 // 格式: let 闭包名: (形参) -> 返回类型 = { (形参1, 形参2, ...) in 代码实现 } // 说明: 使用形参列表,可以直接提供
2016-03-08 17:33:38 234
原创 Swift 闭包的使用(尾随闭包)
-闭包的使用 提问:block 的应用场景是什么? 1. `网络(异步的)代码添加到队列,队列调度完成` -> 回调 无法通过返回值通知调用方 2. 回调的数值,是通过 block 的 `参数进行传递的` 1. Swift 中一般不需要使用 self.,但是 闭包中必须要使用
2016-03-08 17:30:50 2877
原创 swift的一些基本属性8 (字典)
-字典 // MARK: - 字典 /// 拼接 func demo4() { var dict1 = ["name": "zhang", "age": 18] let dict2 = ["title": "boss", "name": "老王", "height": 1.3] // 目标,将
2016-03-08 17:25:36 239
原创 swift的一些基本属性7 (数组)
-数组 // MARK: - 数组的演练 /// 合并数组 func demo5() { var a1 = [1, 2, 3] let a2 = [4, 5, 6] // 目标,将 a2 合并到 a1 中 a1 += a2 print(a1
2016-03-08 17:23:35 234
原创 swift的一些基本属性6 (字符串)
-字符串 Swift String,是一个结构体,量级更轻,效率略高,推荐使用 - 可以支持遍历 OC NSString,是继承自 NSObject 的对象 /// 子串 - 方便的方法,转换成 NSString func demo5() { let str = "我们一起
2016-03-08 17:20:37 305
原创 Swift的一些基本属性5 (for循环)
-for循环func demo1() { // for 变量 in 范围 { // 代码实现 } // 0.. // 注意:.. for i in 0.. print(i) } 打印结果自行打印 print("---")
2016-03-08 17:17:25 1030
原创 swift的一些基本属性4 (Switch)
06-Swift Switch/** 1. 没有 break 2. 不仅仅局限在 int,可以对任何类型的数据进行 switch 3. 每一个 case 都必须至少有一条语句,如果实在没有,可以用 break 4. 如果要 switch 多值,使用 , 分隔 5. case 要涵盖所有的可能,如果不能
2016-03-08 17:14:51 286
原创 Swift的一些基本属性3 (可选项)
可选项// 1. 定义可选项,最原始的方法 // Optional,表示 x 要么有整数值,要么为 nil // 泛型 let x: Optional = 10 // 2. 定义可选项,类型? 的格式 // Int? 表示 x 要么有整数值,要么为 nil //
2016-03-08 17:13:58 286
原创 Swift的一些基本属性2 (控制流)
/// guard 守卫,在 Swift 2.0 推出的语法 和 if let 刚好相反 guard let 是在判断之后的分支有效// 如果守护的变量 为 nil,直接提示并且返回/// 可选项的演示 /// if let/var func optionDemo3() { var x: Int? = 10
2016-03-08 17:12:34 254
原创 Swift的一些基本属性1 (常量变量)
常量和变量/// 如何选择变量和常量? // 只有在需要改变的时候,才应该使用 `var`// 如果从来没有变过的变量,Xcode 会提示使用 let 定义常量 let,一旦设置,不能修改 定义变量 var,一旦设置,可以修改 int x = 10; let x = 10 x
2016-03-08 17:10:10 207
原创 OC和Swift 定义属性的一些对比
1. OC [[UIView alloc] initWithFrame:] initWithXXX Swift UIView(frame:) (XXX:) 2. OC [UIColor redColor] 类方法 Swift UIColor.redColor 3. OC 的枚举 UIButtonTypeCont
2016-03-08 17:00:53 443
原创 C语言的分支语句解析
C语言的分支语句解析1.if的使用(1)if语句作用:判断条件是否成功,成功则执行语句。格式:if(判断条件){语句;}注意:执行判断条件,如果为真(非0),则执行大括号中的语句。否则不执行。实例:#include int main() {int a = 10;if( a>100 ) {printf("a>100,a的值为%d\n
2015-11-02 00:31:01 376
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人