码迷,mamicode.com
首页 > 其他好文 > 详细

黑马程序员-OC学习日记-对象与方法、对象与函数

时间:2015-12-15 06:22:34      阅读:279      评论:0      收藏:0      [点我收藏+]

标签:

------- ios培训、 android培训、java培训、期待与您交流! ----------

 

一.NSString类简介

1.NSStringOC中用来表示字符串的一个类

2.NSString类创建

(1)通过字面量方式创建

     NSString * str = @"要努力学习!";

(2)通过对象方法创建

     NSString * str1 = [NSString alloc];

     str1 = [str1 initWithUTF8String:"今天雾霾好大!"];

     NSLog(@"%@",str1);

(3)通过类方法创建:类方法隶属于类,通过类名调用

     //此处的格式化字符串与NSLog中是一样的

     NSString * str2 = [NSString stringWithFormat:@"今天温度下降了%d",1];

     NSLog(@"%@",str2);

3.NSString中计算长度的方法

    [str length];   

 注意点:[str length]计算字符串中有多少个字符 

       C语言中函数strlen计算字符串占用多少字节,在UTF8编码中一个中文占三个字节

 

二.BOOL类型

1.BOOL : OC中提供的一种Boolean类型,用来表示逻辑上真与假的类型

2.特点:在OC中有2个取值

        YES  真 对应数字1

        NO  假 对应数字0

3.优点:使用BOOL提高代码可读性,减少出错率

 

代码演示:

 

 1 #import <Foundation/Foundation.h>
 2 int main(int argc ,const char *argv[]){
 3    // 遍历10-100的数
 4        for(int i=10;i<100;i++){
 5         // 定义一个BOOL类型变量,判断能否被7整除
 6        BOOL rs = (i % 7 ==0);
 7           if(rs){ 
 8              NSLog(@"%d",i);
 9              break;
10           }
11         }
12    return 0;
13 }

 

 

三.对象与函数

1.对象作为函数参数传递是地址传递

2.对象作为函数参数传递,在函数内部可以访问对象的属性,调用对象方法

3.由于对象保存在堆中,所以对象可以作为函数的返回值。而局部变量不可以

 

代码演示:

 

 1 #import <Foundation/Foundation.h>
 2 
 3 // 定义一个Person类 属性有年龄  行为有说话
 4 
 5 @interface CZPerson : NSObject
 6 
 7 {
 8 
 9   @public
10 
11   int _age;
12 
13 }
14 
15 - (void) say: (NSString *) words;
16 
17 @end
18 
19  
20 
21 @implementation CZPerson
22 
23 - (void) say: (NSString *) words
24 
25 {
26 
27       NSLog(@"%@",words);
28 
29 }
30 
31 @end
32 
33 // 定义一个改变人的函数 
34 
35 //对象作为函数参数传入对象是指向堆的指针
36 
37 void changePerson (CZPerson * person)
38 
39 {// 函数内部可以访问对象属性,调用对象方法
40 
41    person->_age = 10;
42 
43    [Person say:@"hello"];
44 
45 }
46 
47 int main(int argc ,const char *argv[]){
48 
49  // 创建一个对象
50 
51      CZPerson * p = [CZPerson new];
52 
53      p-> _age = 5;
54 
55 changePerson(p);
56 
57 NSLog(@"%d",p->_age);
58 
59  // 打印出来age = 10,说明对象作为函数参数传递是地址传递
60 
61   return 0;
62 
63 }

 

 

四.对象与方法

1.对象作为方法参数传递是地址传递

2.对象可以在方法中进行连续的传递

3.对象可以作为方法的返回值

 

代码演示:

 

 1 #import <Foundation/Foundation.h>
 2 
 3 //定义一个狗类  属性有姓名  行为是咬其他狗
 4 
 5 @interface CZDog : NSObject
 6 
 7 {
 8 
 9   @public
10 
11   NSString * _name; //姓名
12 
13 }
14 
15 - (void) biteOtherDog: (CZDog *) other; // 攻击其他狗
16 
17 @end
18 
19  
20 
21 @implementation CZDog
22 
23 - (void) biteOtherDog: (CZDog *) other
24 
25 {
26 
27        NSLog(@"%@咬了%@一口",_name,other->_name);
28 
29 }
30 
31 @end
32 
33  
34 
35 // 定义一个Person类 行为有给狗改名字,指挥狗去咬其他的狗
36 
37 @interface CZPerson : NSObject
38 
39 - (void) changeDog: (CZDog *) dog; // 给狗改名字
40 
41 - (void) orderDog: (CZDog*) dog biteOther:(CZDog*) other;// 指挥狗去咬其他狗
42 
43 @end
44 
45  
46 
47 @implementation CZDog
48 
49 - (void) changeDog: (CZDog *) dog
50 
51 {
52 
53       dog->_name = @"旺财";
54 
55 }
56 
57 - (void) orderDog: (CZDog*) dog biteOther:(CZDog*) other
58 
59 {
60 
61      [dog biteOtherDog: other];
62 
63 } 
64 
65 @end
66 
67  
68 
69 int main(int argc ,const char *argv[]){
70 
71       CZDog * dog = [CZDog new];
72 
73       dog->_name = @"大黄";
74 
75       CZDog * other = [CZDog new];
76 
77       other->_name = @"小黑";
78 
79       CZPerson * person = [CZPerson new];
80 
81       [person changeDog: dog];
82 
83       NSLog(@"%@",dog->_name);
84 
85    //此处打印出来的名字是旺财,说明对象作为方法参数传递是地址传递
86 
87       [person orderDog: dog biteOther: other ];
88 
89    // 此处对象other在方法中进行连续的传递
90 
91 return 0;   
92 
93 }

 

图例:1

   技术分享

 

图例2

  技术分享

 

五.多文件开发

1.为了方便程序管理,把一个类分为两个文件

   .h文件 :存放类的声明。给使用该类的程序员看的

   .m.文件 : 存放类的实现

2.当我们需要使用某个类的时候,需要导入这个类的.h文件,不能导入.m文件

3.当某2个类出现循环导入的情况,一端必须使用@class来声明这个类

4.@class仅仅告诉编译器这是一个类,其他关于类本身的信息它都不明确,所以@class一般  仅仅用在头文件中

 

 

黑马程序员-OC学习日记-对象与方法、对象与函数

标签:

原文地址:http://www.cnblogs.com/ly0709/p/5047004.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!