Object-C(自学1)
----- 需求索要 自学了下 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)的更多相关文章
- 自学Python之路-Python基础+模块+面向对象+函数
自学Python之路-Python基础+模块+面向对象+函数 自学Python之路[第一回]:初识Python 1.1 自学Python1.1-简介 1.2 自学Python1.2-环境的 ...
- 自学Python2.1-基本数据类型-字符串str(object)
Python str方法总结 class str(object): """ str(object='') -> str str(bytes_or_buffer[, ...
- 自学Python2.1-基本数据类型-字符串str(object) 上
自学Python之路 自学Python2.1-基本数据类型-字符串str(object) 上 字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串. 创建字符串 ...
- 自学Python2.3-基本数据类型-元组tuple(object) 方法
Python tuple方法总结 一.元组的简介 1.元组与列表一样,也是一种序列,但是唯一不同的元组是不能修改的 2.元组的元素不可修改,但是元组元素的元素是可以修改的 3.元组通过()括起来表示 ...
- 自学Python2.2-基本数据类型-列表list(object)
Python List方法总结 一. 列表简介: 列表是序列对象,可包含任意的Python数据信息,如字符串.数字.列表.元组等 列表的数据是可变的,我们可通过对象方法对列表中的数据进行增加.修改 ...
- Java自学-接口与继承 Object类
Java中的超类 Object 步骤 1 : Object类是所有类的父类 声明一个类的时候,默认是继承了Object public class Hero extends Object package ...
- JDK源码阅读-------自学笔记(一)(java.lang.Object重写toString源码)
一.前景提要 Object类中定义有public String toString()方法,其返回值是 String 类型. 二.默认返回组成 类名+@+16进制的hashcode,当使用打印方法打印的 ...
- java自学第5期——Object、Date、Calender、System、StringBuilder、基本类型包装类
一.Object类 作用:对象操作 位置:java.lang.Object 方法: public String toString() :返回对象的字符串表示形式. public boolean equ ...
- C++自学笔记 面向对象程序设计OOP(Object Oriented Programming)
什么是对象? Objects = Attributes + Services Data : The properties or status Operations: the fuctions C语言中 ...
- 从零自学Hadoop(08):第一个MapReduce
阅读目录 序 数据准备 wordcount Yarn 新建MapReduce 示例下载 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是 ...
随机推荐
- Go语言实例化结构体——为结构体分配内存并初始化
转自: http://c.biancheng.net/view/66.html 结构体的定义只是一种内存布局的描述,只有当结构体实例化时,才会真正地分配内存.因此必须在定义结构体并实例化后才能使用结构 ...
- Linux用户管理命令介绍
1)管理用户命令总汇 2)管理用户组命令 总汇
- kettle转换设置变量,校验输出新变量
背景:有很多小的转换需要串联起来,如果前一个执行成功,后面继续接着执行,如果执行等待中,就让程序等一会再次获取数据分析,如果失败就中止,成功就进行下一个转换,以此类推.... 需求:通过job把参数传 ...
- PAT A1009 Product of Polynomials(25)
课本AC代码 #include <cstdio> struct Poly { int exp;//指数 double cof; } poly[1001];//第一个多项式 double a ...
- Python 字符串,元祖,列表之间的转换
1.字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串. 创建字符串很简单,只要为变量分配一个值即可.例如: var1 = 'Hello World!' 2. ...
- 修改hosts文件 解决coursera可以登录但无法播放视频的问题
我们经常为了学习或者了解一些领域的知识为访问国外的网站,但是在国内,很多优秀的网站都被封锁了.在GFW(墙)的几种封锁方式中,有一种就是DNS污染,GFW会对域名解析过程进行干扰,使得某些被干扰的域名 ...
- 数据库数据导入/导出报错:无法在只读列“Id”中插入数据。
本文仅供小白参考,大佬请随意...... 本例是:从vs 2017自带的localDB数据库的数据---导出到---->Sql Server 2008中的相应数据库中 1. 导出数据库: 2. ...
- C# 添加log4net日志
一.添加log4net的Nuget包 二.在Web.config或者App.config文件中添加log4net配置 代码: <log4net> <!-- OFF, FATAL, E ...
- .net下载文件的方法
最近做项目遇到文件下载的问题,原本采用的是直接用一个href链接到需要下载的文件来处理这个问题,后来发现,如果文件是一个图片,浏览器会自动打开图片而不是下载,需要用户右击另存为才可以下载,很不友好,后 ...
- 解决 Ubuntu 19 安装openjdk 8后与openjfx不兼容
小淘气放假了,孩子在上幼儿园的小朋友,报班也不能太变态嘛, 还是让他自己娱乐的时间多一点,但是现在在家的娱乐就是看电视,听说电视看多了越看越傻,就想方设法的给他找一点娱乐活动,把我闲置的树莓派给他装了 ...