----- 需求索要 自学了下 OBJECt-C  -----

就基础部分一些 和操作

command + R 运行
command +B 只编译.m文件

NSlog() = printf
NSLog 是自动换行的

#import <Foundation/Foudation.h>
<> 引用的是我们系统的库,找到就有

#import "Person.h"

//""引用的是我们自己的类

.h文件只负责声明 不实现
.m文件实现声明的方法

在Main
// 类名 *变量的名字 = [[类名 alloc]init]
Person *per = [[Person alloc]init];
[Per eat];

-(void)eat;
//对象方法命名规则
1.以-号开头
2.所有的数据类型放在()里面,而且只有数据类型放在()里面。
3.方法名准驼峰原则。

带参数的方法命名规则
1.对象命名前3条准守
2.一个参数带着:号,冒号写在参数类型前面
3方法名想写个句子:
-(void)eatApp:(int)num;

Person *per = [Person new];
[per run];
[per eatApp:5];

set get 方法
-(void)setAge:(int)age{
_age = age;
}

//**set方法
1.以-号开头
2.不需要返回值
3.set开头,后面是对象的成员变量去掉下划线首字母大写
4.只有一个参数
-(void)setAge:(int)age;
//get 方法为了取值的
1.以-号开头
2.返回值类型对应成员变量的类型
3.方法名为对应成员变量去掉下划线部分
4.不需要参数
-(int)age;

->指向符
直接赋值 通过->直接给属性赋值,会得到脏数据(了解)

类:不需要声明一个对象(实例)就可以直接调用的方法,有返回值
// 对象方法求2个和
-(int)sumWithNum1:(int)num1 andNum2:(int)num2;
//类方法求和
1.以+开头
2.其他规则与对象方法的规则(除去第一条)相同
+(int)sumWithNum3:(int)num3 andNum4:(int)num4;

//對象方法中可以直接使用成員變量
//类方法中不能直接使用成员变量
int sum=num3+sum4;

Person *per = [Person new];
int sum = [cal sumWithNum1:5 andNum2:6];
对象方法:
》对象调用
》以-号开头
》可以直接使用成员变量
》可以调用自己的对象和类方法

//类方法
》有类名调用
》以+号开头
》不能直接使用成员变量
》用作工具方法
》只能调用自己的类方法,不能调用自己对象方法

----点语法 :就是set get 方法
赋值不这么写
//[per setAge:18];
per.age = 18;

--property(合成存储器)。
// 组成: @property 对应成员变量的类型 对应成员变量去掉下划线后的部分
//作用; 自動生成对应的成员变量的set . get 方法的定义
@property int houseNum;

对应的 synthesize 对应的方法名
--property(加强版)
@property(nonatomic,assign)int houseNum;

----继承(继承父类的)
如果成员变量可以被继承,需要手动生成

--super:代表是父类的对象指针或者父类类名
使用场合:在子类中调用父类中方法
[super run]
先调用父类的 如果子类还有在调用子类的
----重写(子类和父类同名 ,优先执行子类中同名的方法)
目的(为了在与父类同名方法中完成一些自己的功能)

-----self(用来表示OC中的类名或者对象指针)
1.在对象方法中代表对象指针(自己)(谁调用的对象方法,那么self就代表谁)
在类方法中代表类名
2.可以调用方法和成员变量
3.禁止用自己(死循环)

字符串 NSString *string1 =@"样安抚"
//%d %f 基本的数据类型的占位符
%@ 代表打印的对象
stringWithFormat (格式化拼接字符串)
重写desciption 方法
目的(当一个对象的属性很多时,并且需要打印,那么就重写description,达到简写代码)

----变量作用域
@public 整个程序
@protected 本类和子类中
@private 本类中(用property自动生成)
@package 包内部

多态:一种事物的多种形态(前提:继承)
父类类型的指针指向子类对象 Animal *an = [Dog new];

----- 构造方法:
开辟内存空间 alloc
初始化 init
返回地址 init

以init开头,必须准守驼峰原则
id:万能指针,可以指向任意的对象 -(id)initwithAge:(int)age;

-(id)init{
1.判断self 是否为上一步初始化
2.添加自己类的功能
3.将自己返回
}

NSMakeRange(5,2)区间
NSMutable
--ObjectAtIndex

可变数组: NSMutableArray *phoneArray;

----单例
很霸道,很专一
定义:一个类,只允许通过“类方法”创建一个对象,调用这个类属性和方法时
只能通过这一个对象去调用,
作用:1.保值 :static
2.建立一个公共的访问点,在需要使用的时候调用即可

static Card *sing =nil; ( static 保存上一步的sing的数据)

-----NSData类 一种数据类型
//在传输数据时,传输的是二进制文件

---------协议:一组方法的列表
特点:只有定义,没有实现。实现在准守(引用)了该协议的类的.m文件
实现部分里面 (可以删了.m文件)
霸道
构成: NSObject:基协议
@protocol 协议名<NSObject>
方法定义的列表
@end

-------代理 :委托,是一种设计模式

协议一般放到主动的类中(有需求的类) (懶惰的類)
被动类: 代理类
协议代理名 :当前类名Delegate

-----自动释放池
在main.m @autoreleasepool {
本质上是一个数组,用来存储多个对象,在离开释放池的时候
系统会自动的给池中每个对象发送一个release 消息
}

// 堆和栈
栈 堆
person *per = [[Person alloc]init];
根本区别: 栈趋于低的内存空间 不连续
堆趋于高的内存空间 连续空间

// 进程:
在系统中正在运行的一个应用程序

//多线程
一个进程可以开启多条线程,每条线程可以并行折行不同的任务

//主线程
NSThread *mainThread = [NSThread mainThread];

// NSURLSession
使用创建TASK ,然后执行Task
nsurlsessionDataTask (请求)
download (下载)
upload(上传)

//AFN 简单介绍

Object-C(自学1)的更多相关文章

  1. 自学Python之路-Python基础+模块+面向对象+函数

    自学Python之路-Python基础+模块+面向对象+函数 自学Python之路[第一回]:初识Python    1.1 自学Python1.1-简介    1.2 自学Python1.2-环境的 ...

  2. 自学Python2.1-基本数据类型-字符串str(object)

    Python str方法总结 class str(object): """ str(object='') -> str str(bytes_or_buffer[, ...

  3. 自学Python2.1-基本数据类型-字符串str(object) 上

    自学Python之路 自学Python2.1-基本数据类型-字符串str(object) 上 字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串. 创建字符串 ...

  4. 自学Python2.3-基本数据类型-元组tuple(object) 方法

    Python tuple方法总结 一.元组的简介 1.元组与列表一样,也是一种序列,但是唯一不同的元组是不能修改的 2.元组的元素不可修改,但是元组元素的元素是可以修改的 3.元组通过()括起来表示 ...

  5. 自学Python2.2-基本数据类型-列表list(object)

    Python List方法总结 一. 列表简介: 列表是序列对象,可包含任意的Python数据信息,如字符串.数字.列表.元组等   列表的数据是可变的,我们可通过对象方法对列表中的数据进行增加.修改 ...

  6. Java自学-接口与继承 Object类

    Java中的超类 Object 步骤 1 : Object类是所有类的父类 声明一个类的时候,默认是继承了Object public class Hero extends Object package ...

  7. JDK源码阅读-------自学笔记(一)(java.lang.Object重写toString源码)

    一.前景提要 Object类中定义有public String toString()方法,其返回值是 String 类型. 二.默认返回组成 类名+@+16进制的hashcode,当使用打印方法打印的 ...

  8. java自学第5期——Object、Date、Calender、System、StringBuilder、基本类型包装类

    一.Object类 作用:对象操作 位置:java.lang.Object 方法: public String toString() :返回对象的字符串表示形式. public boolean equ ...

  9. C++自学笔记 面向对象程序设计OOP(Object Oriented Programming)

    什么是对象? Objects = Attributes + Services Data : The properties or status Operations: the fuctions C语言中 ...

  10. 从零自学Hadoop(08):第一个MapReduce

    阅读目录 序 数据准备 wordcount Yarn 新建MapReduce 示例下载 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是 ...

随机推荐

  1. PTA(Advanced Level)1025.PAT Ranking

    To evaluate the performance of our first year CS majored students, we consider their grades of three ...

  2. delphicbuilder10_2_1 安装破解注册

    安装程序 1.解压delphicbuilder10_2_1.iso,以管理员身份运行..\delphicbuilder10_2_1\Install\Setup.exe——选择安装语言——点击OK(推荐 ...

  3. dev控件学习笔记之----CxGrid

    本人总结的DEV学习:希望对大家有所帮助. 一.是否显示分组工具: 二.表格左边记录信息显示的宽度: 三.设置表格行高: 四.表头文件的水平和垂直设置:多个设置用按住SHIFT后进行多选,然后就可以设 ...

  4. 自定义函数(function)

    USE [NC] GO /****** Object: UserDefinedFunction [dbo].[dict_url_channel] Script Date: 2019/5/25 16:4 ...

  5. Log4j2日志配置详解(1)

    log4j与log4j不同:log4j是通过Logger的静态方法getLogger()获取Logger对象,而log4j2是通过LogManager的静态方法getLogger()获取Logger对 ...

  6. typora数学符号大全

  7. Resistors in Parallel(找规律+大数)

    题意:https://codeforces.com/group/ikIh7rsWAl/contest/254825/problem/E 给你一个n,计算n / Sigma(1~n)的d(是n的只出现一 ...

  8. 怎样将当前节点从DOM树中移除

    1. 获取到当前节点. 2. 获取到当前节点的父节点. 3. 使用 Node.prototype.removeChild() 移除当前节点. <!DOCTYPE html> <htm ...

  9. CSS3--transform相关属性

    ---transform属性使用--- 1.过度时间 :transition: transform 2s; 2.transform: 应用 2D 或 3D 转换.可以对元素进行旋转.缩放.移动或倾斜. ...

  10. 闭包问题for(var i=0;i<10;i++){ setTimeout(function(){ console.log(i)//10个10 },1000) }

    for(var i=0;i<10;i++){ setTimeout(function(){ console.log(i)//10个10 },1000) } 遇到这种问题 如何用解决呢 for(v ...