「OC」构造方法和分类】的更多相关文章

一.构造方法 (一)构造方法的调用 创建一个可用的对象:Person *p=[Person new]; new方法实际上是分为两步来创建一个对象: 1)使用+alloc方法来分配存储空间(返回分配的对象): 2)使用-init方法来对对象进行初始化. 可以把new方法拆开如下: 1.调用类方法+alloc分配存储空间,返回未经初始化的对象 Person *p1=[person  alloc]; 2.调用对象方法-init进行初始化,返回对象本身 Person *p2=[p1 init]; 3.以…
OC语言构造方法: 用来初始化对象的方法,对象方法,以减号开头 为了让对象创建出来,成员变量就会有一些固定的值 重写构造方法的注意点: 先调用父类的构造方法([super init]) 再进行子类内部成员变量的初始化 参考:http://www.codes51.com/article/detail_111604.html 构造方法的调用: 完整的创建一个可用的对象:Person *p=[Person new]; New方法的内部会分别调用两个方法来完成2件事情, 1)使用alloc方法来分配存储…
一.基本原理 (一)为什么要进行内存管理. 由于移动设备的内存极其有限,所以每个APP所占的内存也是有限制的,当app所占用的内存较多时,系统就会发出内存警告,这时需要回收一些不需要再继续使用的内存空间,比如回收一些不再使用的对象和变量等. 管理范围:任何继承NSObject的对象,对其他的基本数据类型无效. 本质原因是因为对象和其他数据类型在系统中的存储空间不一样,其它局部变量主要存放于栈中,而对象存储于堆中,当代码块结束时这个代码块中涉及的所有局部变量会被回收,指向对象的指针也被回收,此时对…
一.OC简介 在C语言的基础上,增加了一层最小的面向对象语法:完全兼容C语言:可以在OC代码中混入C语言代码,甚至是C++代码:可以使用OC开发Mac OS X平台和iOS平台的应用程序. 二.OC语法预览 (一)关键字 基本上所有的关键字都是以@开头的,如@interface  @implementation  @public等,少部分没有以@开头,如id,_cmd等 (二)字符串以@开头 C语言字符串:“hello” OC语言字符串:@“hello” (三)其他语法 基本类型:5种,增加了布…
一.block   (一)简介 block 是什么?苹果推荐的类型,效率高,在运行中保存代码.用来封装和保存代码,有点像函数,block 可以在任何时候执行.在多线程.异步任务.集合遍历.集合排序.动画转场用的很多. block 和函数的相似性:(1)可以保存代码(2)有返回值(3)有形参(4)调用方式一样. 标识符 ^ (二)基本使用 (1)定义block 变量 // 有参数,返回值类型为int int (^MySum)(int, int) = ^(int a, int b) { return…
一.类的深入研究 (一)类的本质 类本身也是一个对象,是class类型的对象,简称“类对象”. Class类型的定义: Typedef struct obj class *class; 类名就代表着类对象,每个类只有一个类对象. 利用class 创建 Person类 利用Person 创建Person类型的对象 Person *p=[[Person alloc] init]; 获取内存中的类对象有两种方法: (1)class c=[p claa];//指向类的对象的指针调用class方法 (2)…
一.点语法 (一)认识点语法 声明一个Person类: 1 #import <Foundation/Foundation.h> 2 3 @interface Person : NSObject 4 { 5 int _age; 6 NSString *_name; 7 } 8 9 - (void)setAge:(int)age; 10 - (int)age; 11 12 - (void)setName:(NSString *)name; 13 - (NSString *)name; 14 15…
一.基本概念 多态在代码中的体现,即为某一类事物的多种形态,OC对象具有多态性.必须要有继承,没有继承就没有多态. 在使用多态时,会进行动态检测,以调用真实的对象方法. 多态在代码中的体现即父类指针指向子类对象. 1 Person *p = [Student new]; 2 3 p->age = 100; 4 5 [p walk]; 二.多态使用注意 1.多态的好处 用父类接收参数,节省代码 需要一个新的函数专门用来喂狗 void feed(Dog *d) { [d  eat]; } 如果这个时…
一.基本用法 1.设计两个类Bird.Dog 1 // Bird的声明 2 @interface Bird : NSObject 3 { 4 @public 5 int weight; 6 } 7 - (void)eat; 8 @end 9 // Bird的定义 10 @implementation Bird 11 - (void)eat { 12 NSLog(@"吃吃吃-体重:%d", weight); 13 } 14 @end 15 // Dog的声明 16 @interface…
一.面向对象和封装 面向对象的三大特性:封装.继承和多态 在OC语言中,使用@interface和@implementation来处理类.   @interface就好像暴露在外面的时钟表面,像外界提供展示以及接口.@implementation就好像隐藏在时钟内部的构造实现,把具体的实现封装了起来. 二.set方法 在开发过程中,考虑到安全性要求,我们一般不在成员变量名前面使用@public.@protected等关键字修饰,而是使用Set方法来为对象提供成员变量的值.在set方法的内部也可以…
一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能的类. 术语:OO面向对象.OOP面向对象编程 二.类和对象 (一)关于类 类的设计只关注三个东西:类名.属性和方法 注意:一般名词都是类,拥有相同属性和行为的对象都可以抽象为一个类,类名是标识符的一种,需要符合规范,通常类名的第一个字母大写,且不能有下划线,如果有多个单词则使用驼峰标识.在对方法进行类的划分中,一般…
一.@property @synthesize关键字 这两个关键字是编译器特性,让Xcode可以自动生成getter和setter. (一)@property 关键字 @property 关键字可以自动生成某个成员变量的setter和getter的声明 如:@property int age; 编译时遇到这一行,则自动扩展成下面两句: - (void)setAge:(int)age; - (int)age; (二)@synthesize关键字 @synthesize关键字帮助生成成员变量的set…
一. 分类-Category 1. 基本用途:Category  分类是OC特有的语言,依赖于类. ➢ 如何在不改变原来类模型的前提下,给类扩充一些方法?有2种方式 ● 继承 ● 分类(Category) 2. 格式 ➢ 分类的声明 @interface 类名 (分类名称) // 方法声明 @end ➢ 分类的实现 @implementation 类名 (分类名称) // 方法实现 @end 3. 好处 ➢ 一个庞大的类可以分模块开发 ➢ 一个庞大的类可以由多个人来编写,更有利于团队合作 ➢ …
本文由CrowHawk翻译,是Java GC调优的经典佳作. 本文翻译自Sangmin Lee发表在Cubrid上的"Become a Java GC Expert"系列文章的第三篇<How to Tune Java Garbage Collection>,本文的作者是韩国人,写在JDK 1.8发布之前,虽然有些地方有些许过时,但整体内容还是非常有价值的.译者此前也看到有人翻译了本文,发现其中有许多错漏生硬和语焉不详之处,因此决定自己翻译一份,供大家分享. 本文是"…
题目链接 loj#2038. 「SHOI2015」超能粒子炮・改 题解 卢卡斯定理 之后对于%p分类 剩下的是个子问题递归 n,k小于p的S可以预处理,C可以卢卡斯算 代码 #include<cstdio> #include<algorithm> inline long long read() { long long x = 0,f = 1; char c = getchar(); while(c < '0' || c > '9') c = getchar(); whi…
「BJWC2018」Border 的四种求法 题目描述 给一个小写字母字符串 \(S\) ,\(q\) 次询问每次给出 \(l,r\) ,求 \(s[l..r]\) 的 Border . \(1 \leq n,q \leq 10^5\) 解题思路 : 求 Border 等价于在 \([l, r)\) 中找一个点 \(i\) ,满足 \(lcs(i, r) \geq i -l + 1\) ,且 \(i\) 最大. 考虑把问题丢到 \(\text{Sam}\) 上,那么满足的条件变为 \(len(l…
如何才能让房东准确的描述自己的房源,如何才能让房东充分的展示自己的房源.Airbnb 在这次更新里尝试去解决了这两个问题,让我们跟随作者的文笔去了解一下整个项目的经过. 关于本文 原文作者:Cecilia 是一位设计经理,负责带领 Aribnb 的房东体验团队.她热爱阅读与短故事创作,以及品尝各式各样的的热带水果. 原文链接:Unlocking Extraordinary Hospitality 阅读时长:约6分钟 从树屋到冰屋,从城堡到公寓,Airbnb 拥有最独特也最丰富的房源. 但是,如果…
Descrption OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常调整员工的工资.如果他心情好,就可能把每位员工的工资加上一个相同的量.反之,如果心情不好,就可能把他们的工资扣除一个相同的量.我真不知道除了调工资他还做什么其它事情. 工资的频繁调整很让员工反感,尤其是集体扣除工资的时候,一旦某位员工发现自己的工资已经低于了合同规定的工资下界,他就会立刻气愤地离开公司…
「HAOI2018」字串覆盖 题意: ​ 给你两个字符串,长度都为\(N\),以及一个参数\(K\),有\(M\)个询问,每次给你一个\(B\)串的一个子串,问用这个字串去覆盖\(A\)串一段区间的最大收益是多少?(\(N,M\le100000,K\leq10^9\))其中,子串长度在\(51\)到\(2000\)的询问个数不会超过\(11000\)个. 题解: ​ 题目的暗示很明显,分类做. ​ 建出\(sam\),维护\(right\)集. ​ 对于询问大于\(50\)的直接暴力跳. ​ 对…
本文由CrowHawk翻译,地址:如何优化Java GC「译」,是Java GC调优的经典佳作. Sangmin Lee发表在Cubrid上的”Become a Java GC Expert”系列文章的第三篇<How to Tune Java Garbage Collection>,本文的作者是韩国人,写在JDK 1.8发布之前,虽然有些地方有些许过时,但整体内容还是非常有价值的.译者此前也看到有人翻译了本文,发现其中有许多错漏生硬和语焉不详之处,因此决定自己翻译一份,供大家分享. 本文是“成…
题目传送门:LOJ #3184. 题意简述: 题目说得很清楚了. 题解: 首先需要了解「斐波那契数系」为何物. 按照题目中定义的斐波那契数列 \(F_n\),可以证明,每个非负整数 \(n\) 都能够以唯一方式用如下方式描述: \[n=\sum_{i=1}^{m}a_iF_i\] 其中 \(m\) 是正整数,\(a\) 是长度为 \(m\) 的 \(01\) 序列,\(a\) 中不存在相邻两项 \(a_i\) 与 \(a_{i+1}\) 同为 \(1\). 例如,当 \(m=5\) 时,有: \…
LOJ#3102. 「JSOI2019」神经网络 首先我们容易发现就是把树拆成若干条链,然后要求这些链排在一个环上,同一棵树的链不相邻 把树拆成链可以用一个简单(但是需要复杂的分类讨论)的树背包实现 \(dp[u][j][0/1/2]\)表示第\(u\)个点已经选了\(j\)条链,0是两个不同子树的链拼到一起,1是只有1个点,2是有一条至少有两个点的链 通过这个我们可以求一个\(f[k]\)表示把这棵树分成\(k\)条链有几种情况 环排列可以通过全排列除以排列长度得到 我们设把\(k\)条链分成…
「ZJOI2019」线段树 听说有人喷这个题简单,然后我就跑去做,然后自闭感++,rp++(雾) 理性分析一波,可以发现最后形成的\(2^k\)个线段树,对应的操作的一个子集,按时间顺序作用到这颗线段树上. 首先考虑研究一下tag的性质,比如两个操作时间先后是否没有影响,操作是否可以以某种形式进行合并,然后啥也没发现. 然后考虑一下一颗树是否可以被压成某个状态,比如实际上只有\(\log\)个状态然后去dp,发现也不行 再次冷静分析一波,发现好像每个节点可以独立考虑,结合上面\(2^n\),不妨…
title author date CreateTime categories windows-10「设置」应用完整ms-settings快捷方式汇总 lindexi 2019-09-02 12:57:38 +0800 2018-2-13 17:23:3 +0800 分类 设置名称 快捷方式 系统 显示 ms-settings:display 通知和操作 ms-settings:notifications 平板电脑模式 ms-settings:tabletmode 电源和睡眠 ms-settin…
系列文章: 「 深入浅出 」java集合Collection和Map 「 深入浅出 」集合List 「 深入浅出 」集合Set 前面已经介绍完了Collection接口下的集合实现类,今天我们来介绍Map接口下的几个重要的集合实现类HashMap,Hashtable,LinkedHashMap,TreeMap. HashMap (最常用,随机访问速度快,无序,可存一个Null key,多个Null value,非同步) HashMap是最常用的Map,它根据键的HashCode值存储数据,根据键…
有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+案例 思维导图」「基础篇上」 SpringBoot图文教程2-日志的使用「logback」「log4j」 SpringBoot图文教程3-「'初恋'情结」集成Jsp SpringBoot图文教程4-SpringBoot 实现文件上传下载 SpringBoot图文教程5-SpringBoot 中使用A…
「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 不论新老朋友 我相信您都可以 从中获益.如果觉得 「不错」 的朋友,欢迎 「关注 + 留言 + 分享」,文末有完整的获取链接,您的支持是我前进的最大的动力! 一.织布机 | 一切的开端 如今代表智能现代的计算机与老式织布机的血缘关系超乎你的想象.无论是摆在写字台上的 台式机.塞在口袋里的 掌上电脑.…
「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 不论新老朋友 我相信您都可以 从中获益.如果觉得 「不错」 的朋友,欢迎 「关注 + 留言 + 分享」,文末有完整的获取链接,您的支持是我前进的最大的动力! Part 1. 机器指令 上一次 我们已经了解了 二进制和 CPU 的基本原理,知道了程序运行时,CPU 每秒数以亿次.十亿次.百亿次地震荡着…
目录 description solution accepted code details description 小 R 与小 W 在玩游戏. 他们有一个边数为 \(n\) 的凸多边形,其顶点沿逆时针方向标号依次为 \(1,2,3,\dots,n\).最开始凸多边形中有 \(n\) 条线段,即多边形的 \(n\) 条边.这里我们用一个有序数对 \((a,b)\)(其中 \(a<b\))来表示一条端点分别为顶点 \(a,b\) 的线段. 在游戏开始之前,小 W 会进行一些操作.每次操作时,他会选…
扫盲 首先带大家了解一下什么是MVVM模式: 什么是MVVM?MVVM是Model-View-ViewModel的缩写. MVVM是MVC的增强版,实质上和MVC没有本质区别,只是代码的位置变动而已 从名字上看,MVVM比MVC架构中多了一个ViewModel,没错,就是这个ViewModel,他是MVVM相对于MVC改进的核心思想.在开发过程中,由于需求的变更或添加,项目的复杂度越来越高,代码量越来越大,此时我们会发现MVC维护起来有些吃力,首先被人吐槽的最多的就是MVC的简写变成了Massi…