w
h
y
?
y
o
u
a
r
e
h
e
r
e
?
block从表面看相当于一个带有自动变量的匿名函数
因为block可以传入参数有并且有返回值
在block里还能获取到外部的变量
但是默认block是不能修改局部变量的值
而且block捕获的是变量的瞬时的值
但是block可以修改静态变量、静态全局变量和全局变量
如果想要修改局部变量的值
需要在局
...
顾名思义
协议就是双方要协商好的意思
也就是一方负责制定规则,一方需要遵守规则
在iOS中协议主要是用于方法回调
还有就是代码的封装
因为协议里面的方法默认是必须实现
这样的话就可以把必须实现的方法写到协议里面
防止使用的时候被遗忘更加的安全
还有就是在iOS中没有多继承
但是可以通过多个协议来实现
...
说到面向对象不得不说的三个特点
封装继承和多态
比如用计算器来说
假如目前只是需要加法
面向过程就是直接把加法的代码里写进去
面向对象会把计算器单独作为一个文件
然后把加法单独写一个方法
然后后来有的地方需要新增一个减法的功能
面向过程就会在当前的地方直接把减法的写进去
面向对象只需要在建一个文件继
...
iOS内存由低到高分为五个区
.text段(代码区)、.data段(已初始化的全局变量、静态变量)、.bss段(未初始化的全局变量、静态变量)、堆区、栈区
栈内存由系统管理
堆内存由开发者管理
栈内存存储变量参数
堆内存存储对象
内存管理的几种方式
手动管理MRC
谁创建,谁释放。谁retain,谁
...
Category分类
Extension扩展
Extension是编译时就决议生效的可以添加实例变量方法属性
Category是运行时决议生效的可以添加方法属性(属性不会自动生成getset方法需要手动生成)
1234567891011121314struct objc_class {
...
说到KVC不得不说Set和Get
正常访问属性都是用Set方法和Get方法
但是苹果还提供了另外一种方法就是KVC全称Key-Value Coding 中文就是键值编码
简单点来说就是直接
用valueForKey和valueForKeyPath来获取属性的值
用setValue forKey和se
...
第一种情况
没有打开xcworkspace而打开了xcodeproj
第二种情况
就是修改Build Active Architecture Only
第三种情况
就是Podfile配置的问题
use_frameworks!
寒窗苦读十余年只为今朝中状元奋笔疾书定前程鲤鱼一跃便是龙
Reveal下载地址
12链接: https://pan.baidu.com/s/1935iAMQncz4Jqk3MUU46lA提取码: df9a
手机安装插件Reveal Loader
然后把压缩包里的libReveal.dylib复制到手机上/Library/RHRevealLoader/即可
...
准备好两个plist文件
一个正式的Release.plist
一个测试的Debug.plist
plist文件相当于打包上传的时候配置文件
比如是应用商店的
还是本地测试的
是自动管理的
还是手动配置的等等
正式的Release.plist
123456789101112131415161718&
...