oc-29-可变数组

简介:
复制代码
/**
 数组长度不固定,可以随便往里面添加或者删除元素。
 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
复制代码

 


本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/5314439.html,如需转载请自行联系原作者

相关文章
|
JavaScript 前端开发 数据安全/隐私保护
vue element plus Input 输入框
vue element plus Input 输入框
661 0
|
6月前
|
运维 自然语言处理 Cloud Native
云栖实录 | 智能运维年度重磅发布及大模型实践解读
云栖实录 | 智能运维年度重磅发布及大模型实践解读
330 0
|
9月前
|
域名解析 网络协议 关系型数据库
【网络原理】——带你认识IP~(长文~实在不知道取啥标题了)
IP协议详解,IP协议管理地址(NAT机制),IP地址分类、组成、特殊IP地址,MAC地址,数据帧格式,DNS域名解析系统
|
SQL 关系型数据库 MySQL
【错误】mysql 出现 “1067 - Invalid default value for ‘UPDATE_TIME‘ “ 错误提示的解决办法
【错误】mysql 出现 “1067 - Invalid default value for ‘UPDATE_TIME‘ “ 错误提示的解决办法
698 1
|
SQL 开发框架 关系型数据库
基于SqlSugar的数据库访问处理的封装,支持多数据库并使之适应于实际业务开发中
基于SqlSugar的数据库访问处理的封装,支持多数据库并使之适应于实际业务开发中
|
算法 网络架构
|
机器学习/深度学习 编解码 计算机视觉
【保姆级教程|YOLOv8改进】【6】快速涨点,SPD-Conv助力低分辨率与小目标检测
【保姆级教程|YOLOv8改进】【6】快速涨点,SPD-Conv助力低分辨率与小目标检测
|
SQL 关系型数据库 MySQL
简简单单 My SQL 学习笔记(2)——分组和简单数据的查询
简简单单 My SQL 学习笔记(2)——分组和简单数据的查询
|
监控 Java 流计算
Flink中的窗口操作是什么?请解释其作用和使用场景。
Flink中的窗口操作是什么?请解释其作用和使用场景。
175 0
关于Spring Cloud Gateway与下游服务器的连接分析
背景 最近面试了不少同学,有很大一部分简历上会提到网关,我一般都会顺着往下问他们的网关是怎么做的。 基本上都是说直接使用的Spring Cloud Gateway或者基于Spring Cloud Gateway二次开发。 这种时候我会继续问一个比较基础的问题:Spring Cloud Gateway作为网关,会把接收到的请求转发给下游服务,那么Spring Cloud Gateway跟下游的服务之间保持的是长连还是短连?还是说每次转发的时候都会新建立一个连接吗?