/** 数组长度不固定,可以随便往里面添加或者删除元素。 1.创建数组 NSMutableArray *arrayM = [NSMutableArray array] 2.给数组添加元素(只能是OC对象) - (void)addObject:(id)anObject; 3.如何删除数组元素 */ #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { // 1.如何创建1个可变数组 NSMutableArray *arrayM = [NSMutableArray array]; // 2.给数组里面添加元素 [arrayM addObject:@"ssssx"]; [arrayM addObject:@"赵信"]; [arrayM addObject:@"嘉文"]; [arrayM addObject:@"ssssx"]; [arrayM addObject:@"赵信"]; [arrayM addObject:@"嘉文"]; [arrayM addObject:@"ssssx"]; [arrayM addObject:@"赵信"]; [arrayM addObject:@"嘉文"]; // 3.删除数组元素 // 删除指定名字的数组元素 [arrayM removeObject:@"ssssx"]; // 删除指定位置的数组元素 [arrayM removeObjectAtIndex:1]; // 删除所有元素 [arrayM removeAllObjects]; NSLog(@"%@",arrayM); } return 0; } /* @synthesize name = _b; //相当于操作_b的值 -(void)setName:(NSString *) name { _b = name; } -(NSString *)name { return _b; } 注意:在4.4之前,@property和@synthesize成对出现 2)@property 在Xcode4.4之后(@property增强) 增强使用: @property int score; 1).h文件中 帮我们声明 setScore(setter) 和score(getter)方法 2).m 中帮我们生成_score的私有变量(在外部不能访问,不能被子类继承) 3).m 中帮我们实现 get和set方法 3、动态类型&id类型 动态类型:程序在运行的时候,才能确定对象属于什么类型 静态类型:程序编译的时候,就确定了对象的类型 动态类型的体现: 多态,父类指针可以指向子类对象 NSObject 是所有类的基类 NSObject *obj = [Dog new]; 父类调用子类特有的方法 [(Person *)obj eat]; //id类型,id类型又被称为 万能指针。 id obj; //运行时检查 obj = [Car new]; //实例变量 _speed [obj stop]; //id类型调用子类的方法的时候不要强制类型转换,NSObject *类型调用子类方法的时候要强制类型转换。 6、构造方法的使用 [Person new]; -> [Person alloc];//空间申请完后,不能立即使用,有可能会导致意想不到的错误 -> [[Person alloc] init]; [Person new]; 会把我们的成员变量的值,默认的设置为0