基本知识点回顾
我们知道按照变量的作用域划分的话,变量可划分为局部变量
和全局变量
,而局部变量
又分为自动变量
和静态变量
,全局变量
分为静态全局变量
和非静态全局变量
本篇是解决上一篇的第一个问题的;
读过我实例对象、类对象和元类对象是如何分工的的朋友应该知道一个类的实例方法是存放在类对象
中的,类方法是存在元类对象
中,这些是在编译阶段就能确定的,但是我们并没有发现分类的方法,也就有了下面的疑问:
创建一个iOS
项目
新建类TestObj
1 | //TestObj.h |
ViewController
如果要需要监听TestObj
对象的name
值的改变,代码如下
1 | #import "ViewController.h" |
运作模拟器点击后输出以下 很简单
1 | <TestObj: 0x6000024d4400>对象的name值改变了{ |
本文已经默认你已经了解了实例对象
、类对象
和元类对象
,关于什么是实例对象
、类对象
和元类对象
,请自行了解不在本文的范围内。
平时开发的过程中我们会创建类,然后给这个类增加属性,方法,甚至添加协议和分类,然后分类有添加方法等等,那么这些添加的东西在内存中是如何存放的呢,当我们调用某个方法的时候又是如何完成调用的呢?
more >>NSObject
对象占用了多少内存?可以通过方法malloc_size
来查看某个对象分配了多少内存
1 | #import <Foundation/Foundation.h> |
输出
1 | 16 |
为什么会是16呢??
more >>要想实现命令行控制模拟器需要用的到命令是simctl
: Simulators Control
看这命令的意思像是这两个单词的缩写,搭载xcrun
命令,可以通过这个命令实现以下功能
举例UIViewController
3个分类分别为UIViewController+A
UIViewController+B
UIViewController+C
.A
1 | + (void)load { |
.B
1 | + (void)load { |
.C
1 | + (void)load { |
运行结果
1 | 2018-03-23 11:06:10.975429+0800 ExchangeImp[4802:195579] ----C--- |
这个顺序是怎么来的的呢,就不卖关子了,本文的重点是第二个问题
more >>
增加数据库;
create database 数据库的名字 charset=字符编码;
1 | create database testdb charset=utf8; |
查询数据库
show databases;
1 | mysql> show databases; |
选择数据库
use testdb;
1 | mysql> use testdb; |
查看正在使用的数据库
select database();
1 | mysql> select database(); |
查看使用的数据库的所有表
show tables;
1 | mysql> show tables; |
删除数据库
drop database 数据库名称;
1 | mysql> drop database testdb; |
数据库备份
这里用到的是终端的一个重定向>
的命令
Mac
下数据库的数据保存的路径/usr/local/mysql/data
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true