//引用Foundation框架
#import <Foundation/Foundation.h>
#import "Person.h"
#import "Student.h"
//程序入口:返回类型 main(相关的参数){
//函数体
//return 返回类型参数;
//}
int main(int argc, const char * argv[]) {
//NSLog 为输出语法
NSLog(@" Hello, DA Xiong " );
//引入头文件#import "Person.h"
//实例化Person对象newPerson
Person *newPerson=[[Person alloc]init];
// 设置对象age属性的值
[newPerson setAge:1000];
// 获取newPerson对象age的值,利用对象方法getAge,这个方法由于有返回值可以直接打印或者用一个相应类型的变量的接受
int age=[newPerson getAge];
NSLog(@"person age:%i",age);
//类方法调用对象方法
[Person print];
//---------复习-------
// 实例化对象的步骤:
// 1.创建一个类 2.引入头文件 #import “头文件” 3.实例化对象 类 *对象名=[[类名 alloc]init];
// 关于方法
// 方法书写:
// 方法类型 (返回值类型)方法名 :(参数类型)参数名
// 类方法: +
// 对象方法: —
// 类方法不可以使用类属性
//------关于继承
//子类继承父类之后可以使用父类的属性和方法
Student *student=[[Student alloc]init];
[student setAge:20];
NSLog(@"student age :%i",[student getAge]);
[student method];
// 子类继承父类,子类可以使用父类的属性和方法,但父类不能使用子类独有的方法[newPerson method];
Person *person=[[Student alloc]init];
[person setAge:28];
NSLog(@"person age:%i",[person getAge]);
//多态形式,父类参数可以传入子类对象
[person printf:student];
//创建一个不可变的字符串
NSString *testString = @"jack";
//创建一个实例化后的对象
NSMutableString *testMuString = [[NSMutableString alloc]init];
NSMutableString *testMuStringI = [NSMutableString new];
//创建一个实例化后的对象并给一定变量一个初始的内存空间
NSMutableString *testMuStringII = [[NSMutableString alloc]initWithCapacity:10];
//创建一个对象,注意:调用的是类方法创建
NSMutableString *testMuStringIII = [NSMutableString string];
//给一个可变的字符串追加一个字符串 append
[testMuString appendString:@"123"];
NSLog(@"testMuString append String is: %@", testMuString);
//给一个可变的字符串修改一个字符串 stringReplacing
NSString *replaceString = [testMuString stringByReplacingOccurrencesOfString:@"123" withString:@"456"];
NSLog(@"testMuString replacing String is: %@", replaceString);
//给一个可变的字符串删除一个字符串
[testMuString deleteCharactersInRange:NSMakeRange( 1,2 )];
NSLog(@"testMuString delete String is: %@", testMuString);
//NSArray
//数组的特点: 有序,类型相同
//定义一个不可变的数组
NSArray *testArray = @[ @"1" , @"2", @"3" ];
//打印数组,取出下标
NSLog(@"testArray is %@, 下标为0的数为:%@", testArray, testArray[0] );
//创建一个可变的数组
NSMutableArray *testMuArray = [[NSMutableArray alloc]init];
//创建一个可变的数组,给予一个初始的内存空间
NSMutableArray *testMuArrayI = [[NSMutableArray alloc]initWithCapacity:10];
//给数组追加一个元素 add
[testMuArrayI addObject:@"4"];
NSLog(@"testMuArrayI addObject is : %@", testMuArrayI );
//修改一个数组下标元素的值
testMuArrayI[0] = @"1";
[testMuArrayI setObject:@"2" atIndexedSubscript:0];
NSLog(@"testMuArrayI modify is : %@", testMuArrayI );
//删除一个数组里面的元素
[testMuArrayI removeObject:@"2"];
//删除数组的全部元素
[testMuArrayI removeAllObjects];
NSLog(@"testMuArrayI remove is: %@", testMuArrayI);
//NSDictionary 字典
//字典通常是以键值对的形式存在,key-value,例如 “name” : "jack" , name为key,value为jack
//记住:数组是有序的,字典是无序
//注意:不可变的家庭里 NSString @"",NSArray @[], NSDictionary @{}
NSDictionary *testDict = @{
@"name" : @"jack", //键值对之间以逗号,分割
@"age" : @"17" //键值对
};
NSLog(@"testDict: %@", testDict );
//创建一个可变的字典
NSMutableDictionary *testMuDict = [[NSMutableDictionary alloc]init];
//追加一对键值对
[testMuDict addEntriesFromDictionary: @{ @"mother" : @"rose" }];
//修改一对键值对
testMuDict[@"name"] = @"daXiong";
//如果不存在添加一对键值对,如果存在修改这个键值对
[testMuDict setValue:@"daDaXiong" forKey:@"name"];
[testMuDict setValue:@"daDaXiong" forKey:@"nick"];
NSLog(@"testMuDict: %@", testMuDict );
//删除一对键值对
[testMuDict removeObjectForKey:@"nick"];
//删除全部键值对
[testMuDict removeAllObjects];
NSLog(@"testMuDict: %@", testMuDict );
//NSNumber:通常为封装基本的数据类型,注意:NSNumber封装后一般类型为对象类型 例如 @1 为对象类型
//基本的数据类型:int float char double bool
NSNumber *number1 = @1;
NSNumber *number2 = @1.1f;
NSNumber *number3 = @'c'; //注意打印出来C是ASCII
NSNumber *number4 = @YES;
NSLog(@"number1 is %@ , number2 is %@ ,number3 is %@, number4 is %@", number1, number2, number3, number4 );
//1、遍历一个字典
// for (int i=0; i<[testDict count]; i++) {
// NSLog(@"%@",);
// }
//遍历字典是可以遍历字典的键通过for 的方式:for ( 变量名 in 字典)。变量名可以是任何,但是获得的是键
for (id key in testDict) {
NSLog(@"dict :%@",key);
NSLog(@"value :%@",[testDict valueForKey:key]);
}
// 或者我们通过获取字典的所有键或所有值的方法,获得的数组遍历得到所需内容
NSLog(@"字典的所有值:%@",[testDict allValues]);//返回NSArray,是获得字典所有值
//在值的数组里遍历
for (id key in [testDict allValues] ) {
NSLog(@"dict :%@",key);
// NSLog(@"value :%@",[testDict valueForKey:key]);
}
//2、遍历一个数组
for (int i=0;i<[testArray count];i++){
NSLog(@"数组遍历元素:%@",testArray[i]);
}
for (NSString *object in testArray) {
NSLog(@"数组遍历元素:%@",object);
}
//-------------- 结构体 ----------------
//-----NSRange----描述范围:参数为,位置和长度
NSRange range=NSMakeRange(2, 3);
NSLog(@"range location:%li, length:%li",range.location ,range.length);
//------NSPoint-----描述位置
NSPoint point =NSMakePoint(1, 3);
NSLog(@"point x:%.2f y:%.2f",point.x,point.y);
//----NSSize-----描述大小(宽高)
NSSize size=NSMakeSize(34, 88);
NSLog(@"size weight :%.2f height:%.2f ",size.width,size.height);
//------NSRect-----描述位置和大小
NSRect rect =NSMakeRect(2, 3, 67.3, 23.2);
NSLog(@"%.2f %.2f %.2f %.2f",rect.origin.x,rect.origin.y ,rect.size.width, rect.size.height);
NSLog(@"",rect);
//-------NSValue 用来封装结构体,是NSNumber的父类------
//封装NSRect
NSValue *rectValue=[NSValue valueWithRect:rect];
NSLog(@"Value Rect:%@",rectValue);
// 封装NSPoint
NSValue *pointValue=[NSValue valueWithPoint:point];
NSArray *arrayWithStruct=@[rectValue,pointValue];
for (int i=0; i<[arrayWithStruct count]; i++) {
NSLog(@"%@",arrayWithStruct[i]);
NSValue *pointV=arrayWithStruct[1];
//NSValue 可以转化为响应的结构体类型
NSPoint po=[pointV pointValue];
NSRect re=[rectValue rectValue];
NSLog(@"%.2f",re.size.width);
}
//通过枚举的方式获得字典的值
//---------按值枚举
//像字典请求一个枚举器
NSEnumerator *enumI=[testDict objectEnumerator];
// 定义接受下一个枚举元素的变量
NSString *object;
// 通过循环逐一获取枚举元素
while (object = [enumI nextObject] ) {
NSLog(@"======%@",object);
}
// ------------- 按键枚举
//向字典请求一个枚举器
NSEnumerator *enumII=[testDict keyEnumerator];
// 定义接受下一个枚举元素的变量
NSString *objectII;
// 通过循环逐一获取枚举元素
while (objectII = [enumII nextObject] ) {
NSLog(@"======%@",objectII);
}
//通过枚举的方式获得数组的值
// 向数组请求一个枚举器
NSEnumerator *enumIII=[testArray objectEnumerator];
// 定义接受下一个枚举元素的变量
NSString *objectIII;
// 通过循环逐一获取枚举元素
while (objectIII = [enumIII nextObject] ) {
NSLog(@"======%@",objectIII);
}
转载于:https://my.oschina.net/u/2499339/blog/524560