----- 需求索要 自学了下 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 简单介绍

最新文章

  1. LeetCode-1TwoSum(C#)
  2. 在MVC架构中使用CodeSmith生成NHibernate映射对象和实体类
  3. 一个js简单的日历显示效果的函数
  4. Jenkins_多项目构建(二):使用Maven聚集关系
  5. php常用函数(持续更新)
  6. Vijos 1180 (树形DP+背包)
  7. Quarzt.NET 任务调度框架
  8. Android开发 Unity3D基础 Android Development
  9. win7家庭版任务栏预览消失,只显文字终极解决法
  10. CoreAnimation —— CALayer
  11. [置顶] 深入浅出MongoDB(三)环境搭建
  12. linux设备驱动程序第四部分:从如何定位oops对代码的调试方法,驱动线
  13. spring的校验框架 @Validated &amp; BindingResult
  14. Object.observe() 观察对象
  15. 关于装双系统Ubantu16.04+Win10引导问题
  16. 【easy】671. Second Minimum Node In a Binary Tree
  17. python之yield的一些应用
  18. HBase API 基础操作
  19. Flink知识点
  20. java新特性

热门文章

  1. Socket与系统调用深层分析
  2. 改变core文件名称和生成路径
  3. linux上安装tcl、tk、expect
  4. 小菜鸟之HTML第三课
  5. Spring的四种事务特性,五种隔离级别,七种传播行为
  6. Codeforces Round #225 (Div. 1) C. Propagating tree dfs序+ 树状数组或线段树
  7. navicat 使用 pymysql模块
  8. URL去重与文章去重的一些基本方法
  9. whistle学习(一)之安装、使用、软件功能了解
  10. Pr PS 笔记