经过前一段时间C语言 的学习,从这周开始正式步入OC的学习

OC中类的定义:同一类事物的抽象,对象则与之相反,是抽象的类的具体化。

OC中定义属性字段时通常在元素前面加上_如

  NSString * _name;
int _age;
BOOL _sex;

未经声明的变量一般为受保护的变量,无法被外界访问,在OC中存在如下三种修饰符

默认为被保护的(protected: 意味着只能够本类或者子类可以访问)

私有的(private: 只能够本类访问)

共有的(public: 所有的类都能够访问)

在某一修饰符后面定义的变量即具有对应的属性。

OC中的构造方法一般以init开头,一般返回id类型(id类型是万能的对象类型),一般初始化的时候命名初始化方法(构造方法)为

-(id)initWithName:(NSString *)name andAge:(int)age

实现的时候一般为

-(id)initWithName:(NSString *)name andAge:(int)age{
self = [super init];
if (self) {
self.name = name;
self.age = age;
}
return self;
}

OC中同样和java和C#一样有与元素对应的get和set方法,但是在OC中我们使用成员变量名(不要下划线)为方法命名,这对我们调用方法提供了一种简便的理解方式。例子如下:

-(void)setName:(NSString *)name;
-(NSString *)name;
-(void)setAge:(int)age;
-(int)age;

OC中将类的方法分为类方法和对象方法,类方法在定义时以+开头,对象方法以-开头。对象方法必须在用声明的对象使用,类方法可以由类直接使用

NSString类:

NSString 类类似于C语言中的char *类型。但是它变得更灵活了

NSString声明和初始化:

        NSString * str = @"";

学习NSString主要是对其几个方法的灵活使用

例子如下

.返回字符串的长度
NSUInteger len = [str length];
.返回单个字符
unichar c = [str characterAtIndex:];
.比较两个字符串的大小关系
BOOL ret = [str1 isEqualToString:str2];
NSComparisonResult ret2 = [str1 compare:str2];
.查找子串的位置和范围
NSRange range = [str rangeOfString:@"粉刷"];
.子串的提取
NSString * subStr1 = [str substringToIndex:];
NSString * subStr2 = [str substringFromIndex:];
NSString * subStr3 = [str substringWithRange:range];

从NSString延伸到可变的字符串NSMutableString,NSMutableString 继承自 NSString,它拥有NSString的所有方法,并且增加了自己特有的方法。如下

.重置字符串内容
[str setString:@""];
.增 append insert
[str appendString:@""];
[str appendFormat:@"%d %c %.2f", , 'T', 2.34];
[str insertString:@"ABC" atIndex:];
.删 delete
[str deleteCharactersInRange:range];
.改 replace
[str replaceCharactersInRange:range withString:@"XXXXXXXXXXXXXXX"];
.查 rangeOfString:

OC—类的设计和NSString的更多相关文章

  1. Objective-c 总结(一):OC类的设计

    (一)学习目标: 1.面向对象基本概念: OOP的主要思想是把构成问题的各个事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述一个事物在整个解决问题步骤中的行为. 2.熟悉OC类的定 ...

  2. OC 类簇与复合

    OC 类簇与复合 类簇: 类簇是Foundation框架中广泛使用的设计模式.类簇将一些私有的.具体的子类组合在一个公共的.抽象的超类下面,以这种方法来组织类可以简化一个面向对象框架的公开架构,而又不 ...

  3. OC——类

    1.Objective-C是C语言的超集,完全兼容C语言 2.所有的关键字都以“@”开头,例如:@interface,@class,@implementation 3.Objective-C的所有对象 ...

  4. 【IOS学习基础】OC类的相关

    几天前突然在别人的类的.m文件中看到这么一句代码:@synthesize xxxx = _xxxx; 当时愣是没理解啥意思,过后才缓过神来发现原来是把一些类的基础知识忘记了,虽然不用过多去深究以前的一 ...

  5. 第一个OC类、解析第一个OC程序

    01第一个OC 类 本文目录 • 一.语法简介 • 二.用Xcode创建第一个OC的类 • 三.第一个类的代码解析 • 四.添加成员变量 • 五.添加方法 • 六.跟Java的比较 • 七.创建对象 ...

  6. Unity3D 游戏开发构架篇 ——角色类的设计与持久化

    在游戏开发中,游戏角色占了很大的篇幅,可以说游戏中所有的内容都是由主角所带动.这里就介绍一下角色类的设计和持久化. 一.角色类应用场景和设计思想 游戏中的角色类型不一而足,有不同的技能,有不同的属性等 ...

  7. “乐”动人心--2017年10款最佳音乐类APP设计盘点

    在上下班的路上,听几首自己喜欢的音乐来打发无聊的等公交车和地铁的时间是现代年轻人的常态.音乐作为最能鼓动人心的"语言",也成为了人们在互联网生活里占比例最高的消费活动之一,一款好看 ...

  8. Java SE 之 数据库操作工具类(DBUtil)设计

    JDBC创建数据库基本连接 //1.加载驱动程序 Class.forName(driveName); //2.获得数据库连接 Connection connection = DriverManager ...

  9. 学员会诊之02:SVN协作以及Page类的设计

    三层架构的学生管理系统是我们第一个稍微大型的项目:分层.一个解决方案多个Project,所以值得我们停下来好好审查审查. 1.测试SVN服务器地址 我们的作业要求学员创建自己的SVN服务器,并且将代码 ...

随机推荐

  1. MyBatis系列:一、入门

    MyBatis无需我介绍,本系列文章是纯干货,没有一点废话. 1.创建一个maven项目,引入mysql的驱动和mybatis的maven引用 <dependency> <group ...

  2. dig中文帮助

    NAME(名称)     dig — 发送域名查询信息包到域名服务器 SYNOPSIS(总览)     dig [@server] domain [⟨query-type⟩] [⟨query-clas ...

  3. git_04_回退到上个版本

    前言 使用git版本控制的过程中,多人操作同一个项目时,有时经常会遇到代码冲突报错,一时又无法解决的问题,为了不影响他人正常使用这时便需要回滚代码至原来的版本.如何回滚代码至原来版,可参考以下步骤. ...

  4. 【ABAP系列】SAP ABAP 利用class创建客户/供应商主数据

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP ABAP 利用class创建 ...

  5. linux下安装php扩展的redis

    bu要在网上顺便找个redis扩展,一是不安全,而是,别人的redis可能只能new,能连接,但是不保证是否能进行其他操作, 1.百度一下php redis扩展. 搜索到这个网址:http://pec ...

  6. C++实现,拓展中国剩余定理——解同余方程组(理论证明和代码实现)

    拓展中国剩余定理 前言 记得半年前还写过关于拓展中国剩余定理的博客...不过那时对其理解还不是比较深刻,写的也比较乱. 于是趁学校复习之机,再来重温一下拓展中国剩余定理(以下简称ExCRT) 记得半年 ...

  7. 应用安全-Web安全-SSRF攻防

    原理 服务器: IP:.XX.191.14 nc -l -p 客户端: http://xx.map.xx.com/maps/services/thumbnails?width=215&heig ...

  8. Web高级 JavaScript中的算法

    算法 排序算法 稳定排序 待排序序列中相等元素在排序完成后,原有先后顺序不变. 非稳定排序 有序度 待排序序列中有序关系的元素对个数. 逆序度 1. 插入排序 遍历有序数组,对比待插入的元素大小,找到 ...

  9. Vue 基础 day06 webpack 3.x 结合vue

    在普通页面使用 render 函数渲染组件 var login = { template: '<h3>login</h3>' } var vm = new Vue({ // c ...

  10. css-sprite 雪碧图的使用,合并多张小图,背景图片当按钮的设置

    背景图片基础: 使用background-image来设置背景图片 语法: background-image:url(相对与css的路径) 如果背景图片大于元素,默认会显示图片的左上角 如果背景图片和 ...