- 博客(42)
- 资源 (1)
- 收藏
- 关注
原创 一键发布博客教程
一键发布博客教程[TOC]1. 发布平台发布平台推荐:OpenWrite工作台正常注册登录之后,按照网站提示完成以下三步:就可以正常发布文章到各大平台了,目前支持以下8大平台,通过markdown语法编辑文章2. 图床配置发布平台配置好了之后,我们还需要配置图床,之所以需要配置图床是因为文章中或多或少会涉及到图片,图床服务就是将我们的本地图片上传到对应服务器,图片上传成功之后,Markdown文档的本地图片会替换成图片链接。我们将文章发布到各大平台之后就可以正常的访问图片了。2.1 申请
2022-04-22 18:32:25 2076
原创 第6课-类的原理分析下
第6课-类的原理分析下[TOC]6.1 成员变量、属性的区别以及编码6.1.1 成员变量、属性和实例变量属性(property):在OC中是通过@property开头定义,且是带下划线成员变量 + setter + getter方法的变量成员变量(ivar):在OC的类中{}中定义的变量实例变量:是一种特殊的成员变量,它的类型为对象,例如 NSObject、UILabel、UIButton等我们通过一个例子,看一下底层源码:// 成员变量 vs 属性 VS 实例变量@interface
2022-04-11 10:21:20 176
原创 第5课-类的原理分析上-2
第5课-类的原理分析上-2[TOC]5.2.7 类方法在底层的存储上一步中我们知道了对象方法存储在类的bits字段中,但是我们没有找到类方法,我们初步分析一下,如果类方法不在类中,那是不是可能在元类中呢,我们通过lldb验证一下:验证通过。我们思考一个问题,为什么类方法存储到元类里面呢?首先我们通过上一步已经知道,对象方法已经存储到类里面,为了和对象方法区分,类方法是不是需要存储到另一个地方啊,那么也就存储元类最合适了。这也反向说明了元类存在的必要性。结论:类方法是以实例方法的形式存储在元类
2022-04-11 10:18:54 194
原创 第5课-类的原理分析上-1
第5课-类的原理分析上-1[TOC]5.1 类的分析5.1.1 元类首先我们看一下下面实例,引出元类ZBPerson继承NSObject@interface ZBPerson : NSObject{ NSString *hobby;}@property (nonatomic, copy) NSString *name;@property (nonatomic, copy) NSString *nickName;- (void)sayHello;+ (void)say666;
2022-04-10 20:19:41 1236
原创 第4课-类原理分析基础
第4课-类原理分析基础[TOC]1. 内存偏移结论:获取对象内存中的变量,底层实现方式是对象的首地址+偏移值1.1 普通指针类型看下面代码:int main(int argc, const char * argv[]) { @autoreleasepool { int a = 10; int b = 10; int *p1 = &a; int *p2 = &b; NSLog(@"--
2022-04-10 20:19:06 269
原创 第3课-OC对象原理下
第3课-OC对象原理下[TOC]1.对象的本质在之前的课程中我们讲过了编译器,在探索对象的本质之前,我们需要将源文件通过编译器编译成指定文件1.1 clang编译器的常见用法1、将目标文件编译成指定文件例如下面我们将main.m文件编译成c++文件,首先我们在终端进入main.m所在的目录,然后执行clang -rewrite-objc main.m -o main.cpp命令此时我们会报如下错误:解决办法:clang -x objective-c -rewrite-objc -isys
2022-04-10 20:18:29 648
原创 第2课-OC对象原理上-2
第2课-OC对象原理上-21.4.2.4 向系统开辟内存,返回地址指针1.4.2.4.1 查看malloc源码系统底层是怎么分配内存的呢,我们先看以下例子:有一个ZBPerson对象如下@interface ZBPerson : NSObject@property (nonatomic, copy) NSString *name; ///< 名字@property (nonatomic, copy) NSString *nickName; // 昵称@property (nonatom
2022-04-10 20:05:00 1742
原创 第2课-OC对象原理上-1
第2课-OC对象原理上-1[TOC]1.1 alloc对象的指针地址和内存首先我们看下面代码的执行ZBPerson *p1 = [ZBPerson alloc];ZBPerson *p2 = [p1 init];ZBPerson *p3 = [p1 init];NSLog(@"%@-%p-%p", p1, p1, &p1);NSLog(@"%@-%p-%p", p2, p2, &p2);NSLog(@"%@-%p-%p&q
2022-04-10 20:01:11 1464
原创 第1课-OC对象原理基础
第1课-OC对象原理基础[TOC]在探索OC对象原理之前,我们首先需要了解以下知识点1. lldblldb是xcode自带的命令行调试工具。我们可以通过:help:查看lldb常见命令help expression: 也可以指定查看某个具体命令,这里是查看expression的具体用法1.1 计算表达式命令(expression、po、p)1.1.1 expressionexpression可简写为expr或者eexpression命令的作用是执行一个表达式,并将表达式返回的结果
2022-04-10 19:27:47 1045
原创 iOS开发基础-C语言数据类型和运算符
第2章 数据类型和运算符2.1 注释程序注释是源代码的一个重要部分,对于一份规范的程序源代码而言,注释应该占到源代码的1/3以上;单行注释 //;多行注释 /*注释开始和*/注释结束,需要指出的是多行注释不可以嵌套,在/**/多行注释代码块内,不能再次使用/**/添加多行注释;2.2 标识符和变量2.2.1 分隔符 Objective-C语言里的分号(;)、花括号({})、方括号([])、圆括号(())、空格、圆点(.)都具有特殊的分隔作用,因此被统称为分隔符。分号 Objectiv
2022-04-10 16:43:34 2307
原创 XCode免升级支持iOS设备调试
Could not locate device support files.This iPhone 6 is running iOS 10.3.1 (14E304), which may not be supported by this version of Xcode.解决方案:打开/Applications/Xcode.app/Contents/Developer/Platforms/
2017-05-03 16:07:21 652
原创 宏
宏优缺点系统预编译宏1.NS_ASSUME_NONNULL_BEGIN和NS_ASSUME_NONNULL_END2.UIKIT_EXTERN和FOUNDATION_EXTERN3.NS_AVAILABLE_IOS、NS_DEPRECATED_IOS、NS_CLASS_AVAILABLE、NS_ENUM_AVAILABLE、NS_AVAILABLE、NS_DEPRECATE
2017-05-03 10:38:00 471
原创 MWeb-Markdown语法
目录目录标题一级标题二级标题三级标题四级标题五级标题六级标题强调换行无序列表有序列表任务列表图片链接区块引用行内代码多行或者一段代码顺序图或者流程图表格分割线MathJax语法脚注行内Html标题一级标题二级标题
2017-04-28 19:36:33 2656
原创 xcode设计
// EZOnlineScorerRecorder.m// EZOnlineScorerRecorder//// Created by Johnny on 27/03/2017.// Copyright © 2017 LLS. All rights reserved.//import "EZOnlineScorerRecorder.h"import "EZAudioSo
2017-04-18 19:51:14 531
原创 UITextField设置placeholder颜色
[self.passwordTextFieldsetValue:[UIColorcolorWithHexColor:@"#ffffff"]forKeyPath:@"_placeholderLabel.textColor"]; [self.accountTextFieldsetValue:[UIColorcolorWithHexColor:@"#ffffff"]
2016-08-22 17:58:32 775
原创 Xcode常用插件
工欲善其事,必先利其器。要想提高开发效率,使用一些常用的插件是必不可少的。下面就给大家介绍一下我在Xcode中常用的一些插件。1.Alcatraz 一个管理插件的插件下载地址:https://github.com/alcatraz/Alcatraz.git(1)安装在线安装,打开你的终端输入以下命令。curl -fsSL https://raw.github
2016-08-12 16:47:01 1501
原创 Icon和LunchImage
苹果官方文档:https://developer.apple.com/library/ios/qa/qa1686/_index.htmlTechnical Q&A QA1686App Icons on iPad and iPhoneQ: How are the icon files in my application bundle used on iPad a
2016-08-09 18:00:32 848
转载 在xcode6.1和ios10.10.1环境下实现app发布
链接地址:http://jingyan.baidu.com/album/f25ef25477db8b482d1b8252.html?picindex=1
2016-08-09 17:09:22 294
原创 iOS-手动添加限制-constraintsWithVisualForm
[NSLayoutConstraint constraintsWithVisualFormat:options:metrics:views: ];constraintsWithVisualFormat:参数为NSString型,指定Contsraint的属性,是垂直方向的限定还是水平方向的限定,参数定义一般如下:V:|-(>=XXX) :表示垂直方向
2016-08-09 16:54:55 5561
转载 静态包,静态库打包
前言打包静态报的时候需要设置other linker flags ==> 1.-Objc 2.-all_load(打包的项目和使用静态包的项目都要添加)(Xcode里-ObjC, -all_load, -force_load最近在做一个项目的时候,需要使用到一个第三方库,这个库的使用向导里面特别说明,在添加完该库后,需要在Xcode的Build Set
2016-08-09 16:43:18 2139
原创 调试程序-断点,Debug,崩溃日志分析,友盟崩溃日志
一.设置和查看断点断点可以分为以下3种类型。1. 文件行断点设置添加断点->右键选择Edit BreakpointCondition:指的是条件表达式,该项允许我们对断点生效设置条件,表示当满足某一特定条件的前提下,该断点才生效。(该条件的录入,不能够识别预处理的宏定义,也不能识别断点作用域之外的变量和方法)。eg:i == 1 ; (i == 1 ||
2016-08-09 15:06:02 2411
转载 使用Xcode和Instruments调试解决iOS内存泄露
虽然iOS 5.0版本之后加入了ARC机制,由于相互引用关系比较复杂时,内存泄露还是可能存在。所以了解原理很重要。这里讲述在没有ARC的情况下,如何使用Instruments来查找程序中的内存泄露,以及NSZombieEnabled设置的使用。本文假设你已经比较熟悉Obj-C的内存管理机制。实验的开发环境:XCode 4.5.21、运行Demo。先下载一个实现准备好的内存泄露的
2016-08-09 14:10:08 293
原创 基于测试驱动的iOS开发
测试按照阶段划分为:单元测试、集成测试、系统测试和回归测试。单元测试是对软件组成单元进行测试,其目的是检验软件基本组成单位的正确性,其测试对象是软件设计的最小单位——模块。单元测试是一种白盒测试。白盒测试是一种细粒度的测试,具体到方法、函数和异常测试,因此是由能够看懂编程语言、了解程序结构的程序员发起的。为了验证程序的正确性,程序员需要编写测试程序,按照测试用例测试程序是否能够有预期的结果。
2016-08-09 11:35:45 1281
原创 关键字(nonatomic/atomic)、(copy/retain/assign/strong/weak )、(readonly / readwrite)、(@property/@synthesiz
关键字(nonatomic/atomic)、(copy/retain/assign/strong/weak )、(readonly / readwrite)、(@property/@synthesize/@dynamic)、(self/super)
2016-08-08 16:44:26 538
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人