标签:
------- ios培训、 android培训、java培训、期待与您交流! ----------
一.NSString类简介
1.NSString是OC中用来表示字符串的一个类
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一般 仅仅用在头文件中
标签:
原文地址:http://www.cnblogs.com/ly0709/p/5047004.html