基本类的使用
本章要知道的内容有——
创建一个类
声明方法和类方法
声明属性 成员变量
创建一个对象
NSString的使用
NSNumber的使用
创建一个类
创建新文件 填写类名语言选择Objective-C,继承的父类是 NSObject。
这样,一个类就创建好了。
声明方法和类方法
方法
方法的声明:在.h文件中声明,一般是 - (返回值类型)方法名(驼峰标识法){}
(void)setName:(NSString *)name;
(NSString *)name;
方法的实现:在.m文件中书写,快捷的实现方式是 - 方法名 就会提示出来,自己选择就会
(void)setName:(NSString *)name{
_name = name;
}
(NSString *)name{
if (_name != nil) {
return _name;
}else{
return nil;
}
}
构造方法:一般init开头,后面会很常见
(instancetype)init;
(instancetype)init
{
self = [super init];
if (self) {
_name = @"erhuo";
}
return self;
}
类方法
类方法就是通过 + 开头的方法,不需要创建对象就能够调用
- (void)setNewName:(NSString *)newName;
- (void)setNewName:(NSString *)newName{
NSLog(@"%@", newName);
}
[Person setNewName:@"xinXiaoQiang"];
成员变量、属性
成员变量:有三个属性修饰符,@public @private @protected
{
//声明成员变量
// @public 公有修饰符
// @private 私有变量修饰符
// @protected 保护的修饰符
@public
NSString * _name;
@private
NSString * _address;
@protected
NSInteger age;
}
属性:修饰有 nonatomic atomic assign retain copy weak readwrite readonly strong
一般常用的是:nonatomic assign copy strong
@property NSString * nickName;
创建一个对象
怎么创建一个对象
1、引入头文件
用 #import "Person.h" 防止循环导入
用 #include "Person.h"会引起循环导入
2、创建对象
Person * person1 = [[Person alloc] init];
3、使用对象
[person1 setName:@"xiangqiang"];
最终代码样式
Person.h
#import <Foundation/Foundation.h>
//这是.h文件,一般在这里写 属性 方法的声明
@interface Person : NSObject
{
//声明成员变量
// @public 公有修饰符
// @private 私有变量修饰符
// @protected 保护的修饰符
@public
NSString * _name;
@private
NSString * _address;
@protected
NSInteger age;
}
//nonatomic atomic assign retain copy weak readwrite readonly strong setter=<#method#>
//一般我们使用的是 nonatomic assign copy strong
@property NSString * nickName;
//一般面向对象的编程语言,都需要setter getter方法
//OC中setter方法是set+成员变量名
//getter方法是直接成员变量名
- (void)setName:(NSString *)name;
- (NSString *)name;
//OC要写初始化方法,用init开头
- (instancetype)init;
//类方法
+ (void)setNewName:(NSString *)newName;
@end
Person.m
#import "Person.h"
@implementation Person
//[super init]是啥意思??? 因为每一个类都是有一个父类,这个父类我们都称他为 爸爸
- (instancetype)init
{
self = [super init];
if (self) {
_name = @"erhuo";
}
return self;
}
- (void)setName:(NSString *)name{
_name = name;
}
- (NSString *)name{
if (_name != nil) {
return _name;
}else{
return nil;
}
}
+ (void)setNewName:(NSString *)newName{
NSLog(@"%@", newName);
}
@end
main.m
#import <Foundation/Foundation.h>
//include 在C中比较常见的引入头文件的方式,但是在OC中,这样导入可能引起重复引用
//#include "Person.h"
//一般使用 import
#import "Person.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
//创建一个类
// Person * person1 = [[Person alloc] init];
// person1->_address 划横线的
// person1->age 划横线的
// person1->_name 可以访问的
// NSLog(@"%@", person1->_name);
// [person1 setName:@"xiangqiang"];
// NSString * res = [person1 name];
// NSLog(@"%@", res);
// [Person setNewName:@"xinXiaoQiang"];
Person * person2 = [[Person alloc] init];
[person2 setNickName:@"qiangGe"];
// NSLog(@"%@", person2.nickName);
NSLog(@"%@", [person2 nickName]);
}
return 0;
}
NSString的使用
不可变字符串
基本创建方式
void generalUse(){
//NSStrig 是什么呢,是对字符串封装的一个类
//1.最简单的创建方式
NSString * str1 = @"str1";
//2.通过构造方法创建
// NSString * str2 = [[NSString alloc] initWithString:@"str3"];
//3.通过构造方法创建 格式化创建
NSString * str3 = [NSString stringWithFormat:@"%@,22", @"sss"];
//copy 浅拷贝,拷贝的只是地址
NSString * str4 = [str1 copy];
//mutableCopy 深拷贝,拷贝的是整个对象,开辟一个新的内存,存入“str1”这个字符串对象
NSString * str5 = [str1 mutableCopy];
NSLog(@"str1:%@\nstr2:\nstr3:%@\nstr4:%@\nstr5:%@", str1, str3, str4, str5);
NSLog(@"================");
NSLog(@"str1:%p\nstr4:%p\nstr5:%p",str1, str4, str5);
}
NSString的常用方法
void testMethod(){
//1、字符串拼接
NSString * str = @"i am ";
NSLog(@"%@",[str stringByAppendingString:@"good boy"]);
str = [str stringByAppendingString:@"bad boy"];
NSLog(@"%@", str);
NSLog(@"================");
//2、字符串格式化拼接
NSString * str2 = @"xiao";
NSInteger age = 2;
double height = 80.001;
str2 = [str2 stringByAppendingFormat:@"%@-%ld-%.3lf", @" bu dian", age, height];
NSLog(@"%@", str2);
//3、字符串分割
NSString * str3 = @"abcdefghigkflmn";
//通过单个字符分割生成数组
NSLog(@"%@",[str3 componentsSeparatedByString:@"f"]);
//通过字符集合,字符内都有的,一律分割
NSLog(@"%@",[str3 componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"fgh"]]);
}
可变字符串
创建可变字符串:
//NSMutableString 可变字符串
//1.创建字符串
NSMutableString * str = [[NSMutableString alloc] initWithString:@"i am"];
[str appendString:@" ss"];
NSLog(@"%@", str);
//2.格式化创建字符串
NSMutableString * str2 = [[NSMutableString alloc] initWithFormat:@"%@ sss", @"无所谓"];
NSLog(@"%@", str2);
//3.注意,这样创建的字符串默认是不可变的字符串
NSMutableString * str3 = @"不可取";
可变字符串的方法使用:
//基本常用方法,跟不可变的用法类似,但有一些不同方法
NSMutableString * str = [[NSMutableString alloc] initWithString:@"i am a good boy"];
//插入
[str insertString:@" not" atIndex:4];
NSLog(@"%@", str);
//更新,替换
[str replaceCharactersInRange:NSMakeRange(0, 2) withString:@"no"];
NSLog(@"%@", str);
//删除
[str deleteCharactersInRange:NSMakeRange(0, 4)];
NSLog(@"%@", str);
//根据下标取出字符
NSLog(@"%c",[str characterAtIndex:2]);
//从第几个下标开始取值
NSLog(@"%@",[str substringFromIndex:3]);
//从下标0开始,取到哪个地方
NSLog(@"%@",[str substringToIndex:5]);
//从字符串中取出范围的
NSLog(@"%@",[str substringWithRange:NSMakeRange(0, 6)]);
NSNumber的使用
是对数字的封装的类,因为在集合中无法使用基本数据类型,所以需要包装
//整型
NSNumber * num1 = @(2);
NSNumber * num2 = [NSNumber numberWithInteger:22];
//浮点型
NSNumber * floatNum = [NSNumber numberWithFloat:2.1];
NSNumber * doubleNum = [NSNumber numberWithDouble:2.222];
//布尔型
NSNumber * boolTrue1 = @(YES);
NSNumber * boolTrue2 = [NSNumber numberWithBool:YES];
NSNumber * boolFalse1 = @(NO);
NSNumber * boolFalse2 = [NSNumber numberWithBool:NO];
//字符型
NSNumber * char1 = [NSNumber numberWithChar:'a'];
网友评论