A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© z276698840 中级黑马   /  2016-3-27 23:51  /  837 人查看  /  3 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

//------------------------------
//
手动敲3遍这个main函数
int main(){
    @autoreleasepool{
        
        
    }
   
    return 0;
}
打印字符串使用%s
NSString创建的字符串 是一个对象,打印需要使用%@

char *str = "apple";      %s    打印C语言的字符串
//字符串对象
@"apple"          %@       打印OC中字符串对象   NSString



//-----------------------
NSLog 和printf的区别:
1,NSLog可以自动换行, 输出调试信息,  printf不能.
2,NSLog 函数的参数是一个NSString 对象
NSString *str = @"apple";   str就是一个字符串对象
NSLog(@"%@",str);
NSLog(@"xxx %d",num);
3,printf函数的参数是一个字符串常量指针

NSLog不能打印C的中文字符串
printf不能打印OC对象
NS -- > NeXT softWare


//--------------------------
@符号的含义:
1, @""   将双引号的C字符串转换为OC的字符串对象NString;
"Hello";  
----->  C的字符串(常量)
@"Hello";   
----->  OC的字符串对象(常量)

char *str = "Hello";   
// str   ---->  char *类型

NSString *str = @"Hello";   
//  str  --->  NSString类型

2, OC中的一个特有标示符,很多关键字前面都加@。

OC可以访问C源文件中的函数。C不能访问OC中的源文件中的方法。(这里其实是向下兼容)

//-------------------------
注释
1.
//   单行注释    cmd + /

2.
/*

多行注释

*/

3.
/**
*  文档注释

*/

/**
*  描述
*
*  @param n 参数1
*  @param m 参数
2
*
*  @return 返回值
*/
int sum(int n,int m){
   
    return n+m;
}


//---------------------------
OC语言特点
//源文件对比:
1, C中常见的源文件有.c 和 .h ;

2, OC中常见的源文件有.m 和 .h ;

//基本语法对比:
1,数据类型对比:
首先OC兼容C中的所有数据类型;

OC新增了
boolean 类型  
BOOL、
block 类型、
对象类型、
特殊类型
SEL 和 nil 等;

//流程控制语句对比;
首先OC兼容了C中所有的流程控制语句;
OC又新增了自己的for in 增强型的循环语句;
//OC中的增强型for循环
for(NSString *str in arr){
    NSLog(@"%@",str);
}

//增强型 for循环
for(<#数组元素(具体看数组元素是什么类型)#> in <#数组#>){
   
}
注意注意注意:  函数就是函数!   方法就是方法!   它们有本质的区别

//函数和方法定义声明的对比;
//函数
void test();  
//4种类型

//方法
-(void)test;

//--------------------------
boolean
底层的设计是 unsigned char   取值  true为真  false为假
BOOL                  
signed char    取值 YES为真   NO为假

Boolean 和 BOOL的区别:
共同点: 都是一种数据类型  ,都可以用来存储真假值
不同点: Boolean 取值 true false   BOOL 取值 是YES NO
Boolean 不能存储负数  ,BOOL 可以存储负数


//-----------------------------
面向对象思想
面向过程和面向对象,都是人们在采用不同的方法来认识和描述这个世界,是认识世界的不同角度。
对象为处理复杂性问题提供了一种新的方式。
在面向过程的眼中,世界的一切都不是孤立的,它们相互紧密联系在一起,缺一不可,相互影响,相互作用并形成一个个具有严格因果律的小系统,而更多的小系统组成了更大的系统,这些系统构成了世界运行的过程。
在面向对象看来这个世界的本质是由对象组成的,平时看上去相互无关的独立对象在不同的驱动力和规则下体现出不同的运动过程,然而这些过程便展现出了我们这个生动的世界。
面向对象和面向过程并不是对立的两种方法,可以说面向对象是包含面向过程,比面向过程更加抽象的一种方法。
面向过程分析方法主要是描述一个流程,找到过程的起点,然后顺藤摸瓜,分析每一个部分,直至达到过程的终点

面向对象设计三个主要特征:
封装,继承,多态   ---  抽象


//-------------------------类和对象
//什么是类?
类:
类是对一群具有相同属性、行为的事物的统称. 类是抽象的.
通俗一点讲就是  将具有相同属性和行为的实体的向上抽象。
比如:将男人,女人,向上抽象为一类,即为 人;Person类;
将狗,猫,老虎等动物向上抽象为一类,即为动物的类;Animal类等;
//什么是对象?
对象:
对象是现实生活中的1个具体存在.
看得见 摸的着 可以直接使用
即指现实世界中各种各样的实体。它可以指具体的事物也可以指抽象的事物。


//---------------------------------
类是对象的抽象
对象是类的具体实例
类和对象是分不开的;

每个对象,一定有自己所属的类;
每个类,一定有自己对应的实例;
类由对象的抽象而来;

对象由类的具体实例而来;
类  ---"实例化"--->  
对象(属性,方法)


//---------构成  :  中文版  /  代码版
类 :
    类名  :  Person
    属性  :    身高,年龄,爱好
    方法(行为)  :   写代码,做饭,奔跑
对象:
实例化     ------>  小日
//-----------------------------
类的成员组成及访问
组成:
成员变量(属性)
成员方法(行为)
成员变量/实例变量/属性

//类的声明
@interface 类名 : NSObject
{
    属性 / 成员变量 /实例变量
}
    行为 / 方法

+ 类方法   必须由类名来调用

-  对象方法   必须由对象来调用
@end


//类的实现
@implementation 类型
    方法进行实现
@end


//-------------------
实例变量书写规范
@interface Person : NSObject
{
   
//类的属性
   
    int _age;
//    习惯   
//  _age  --->   0
   
    NSString *_name;     
//  _name ---->  nil
   
    Dog *_dog;  
//  _dog  ==  nil
   
}
@end

//--------------------------------
对象
当创建一个对象的时候

//  匿名对象
   Person *p1 = [Person new] = 10;  new做了三件事情:
   
1.向计算机申请内存空间;  
// 堆区
   
2.给实例变量初始化;     
// 默认
1. 基本数据类型 --->  0  
2. 对象类型  nil    nil  ---->  注意 _dog  [nil run];
   
3.返回所申请空间的首地址;

其中
2.给实例变量初始化; -----> 给实例变量初始化会给  "基本(C语言的)数据类型" 初始化为0
                                               "对象类型"初始化为nil
1.C的角度理解   p1就是一个指针变量 什么类型的指针变量呢?  
---> Person *类型
2.OC的角度理解  p1就是一个对象


//成员访问
前提:成员变量需要用@public修饰符修饰;(先记住需要用@public修饰)
Car *car1=[Car new];
car1->lunzi = 3;
// 使用->来访问;


//--------------------------
对象方法

对象方法
(1)对象方法"以-开头"如 -(void)xx;

(2)对象方法只能"由对象来调用"

(3)对象方法中可以"直接访问当前对象的成员变量(属性)"

_age;

int main(){
   
    Person *person = [Person new];
   
   
   
person->_age = 10;
   
   
_age = 10;
   
}

+(void)run
{
   
   
_age = 10;
   
}

-(void)
run
{
   
   
self->_age = 10;   
// self
   
   
_age = 10;           
//  直接访问
   
}

(4)调用格式 [对象名 对象方法名];  "中括号"
xx方法  由xx来调用
方法的声明  写在哪?
@interface 类名 : NSObject
{
   
}
    // 方法的声明
@end
方法的实现  写在哪?

@implementation

//此处 方法的实现
@end

方法的调用:
    [对象 对象方法];


//无参数方法声明
-(返回值)方法名;

//有参数方法声明
"单个参数"
-(返回值)方法名1:(参数类型) 参数名;

"多个参数"
-(返回值)方法名1:(参数类型) 参数名 and:(参数类型2) 参数名2;

//习惯:
举例:
-(void)info:(NSString *name) andAge:(int)age;

方法名: info:andAge:

-(void)findMyPhone:(NSString *)number andInfo:(NSString *)info;

findMyPhone: andInfo:

SEL  
1. 是什么   是一个类型
   
2. 什么类型  方法名类型
   
3. 作为方法的参数传递  

注意:冒号是方法名的一部分


/*

类名:苹果手机(Iphone)

属性:颜色(_color ),
大小(_size), _cpu

行为:查看本机信息(aboutMyPhone),打电话(call), 发短信(sendMessage)

实现该类,
并:

1)查看本机信息

2)打电话给10086

3)给10086发短信问联通的客服电话是多少




*/

1.类与对象的   抽象概念

2.类的声明如何写

3.类的声明中实例变量以下划线开头

4.行为(方法的声明)
5.类的实现

6.行为(方法的实现)

7.创建对象

8.使用对象

3 个回复

倒序浏览
谢谢你的分享~~~
回复 使用道具 举报
66666666666
回复 使用道具 举报
666666666666666666666
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马