基本類的使用
本章要知道的內(nèi)容有——
創(chuàng)建一個類
聲明方法和類方法
聲明屬性 成員變量
創(chuàng)建一個對象
NSString的使用
NSNumber的使用
創(chuàng)建一個類


語言選擇Objective-C,繼承的父類是 NSObject。
這樣,一個類就創(chuàng)建好了。
聲明方法和類方法
方法
方法的聲明:在.h文件中聲明,一般是 - (返回值類型)方法名(駝峰標(biāo)識法){}
(void)setName:(NSString *)name;
(NSString *)name;
方法的實現(xiàn):在.m文件中書寫,快捷的實現(xiàn)方式是 - 方法名 就會提示出來,自己選擇就會
(void)setName:(NSString *)name{
_name = name;
}
(NSString *)name{
if (_name != nil) {
return _name;
}else{
return nil;
}
}
構(gòu)造方法:一般init開頭,后面會很常見
(instancetype)init;
(instancetype)init
{
self = [super init];
if (self) {
_name = @"erhuo";
}
return self;
}
類方法
類方法就是通過 + 開頭的方法,不需要創(chuàng)建對象就能夠調(diào)用
- (void)setNewName:(NSString *)newName;
- (void)setNewName:(NSString *)newName{
NSLog(@"%@", newName);
}
[Person setNewName:@"xinXiaoQiang"];
成員變量、屬性
成員變量:有三個屬性修飾符,@public @private @protected
{
//聲明成員變量
// @public 公有修飾符
// @private 私有變量修飾符
// @protected 保護(hù)的修飾符
@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;
創(chuàng)建一個對象
怎么創(chuàng)建一個對象
1、引入頭文件
用 #import "Person.h" 防止循環(huán)導(dǎo)入
用 #include "Person.h"會引起循環(huán)導(dǎo)入
2、創(chuàng)建對象
Person * person1 = [[Person alloc] init];
3、使用對象
[person1 setName:@"xiangqiang"];
最終代碼樣式
Person.h
#import <Foundation/Foundation.h>
//這是.h文件,一般在這里寫 屬性 方法的聲明
@interface Person : NSObject
{
//聲明成員變量
// @public 公有修飾符
// @private 私有變量修飾符
// @protected 保護(hù)的修飾符
@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;
//一般面向?qū)ο蟮木幊陶Z言,都需要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中,這樣導(dǎo)入可能引起重復(fù)引用
//#include "Person.h"
//一般使用 import
#import "Person.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
//創(chuàng)建一個類
// 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的使用
不可變字符串
基本創(chuàng)建方式
void generalUse(){
//NSStrig 是什么呢,是對字符串封裝的一個類
//1.最簡單的創(chuàng)建方式
NSString * str1 = @"str1";
//2.通過構(gòu)造方法創(chuàng)建
// NSString * str2 = [[NSString alloc] initWithString:@"str3"];
//3.通過構(gòu)造方法創(chuàng)建 格式化創(chuàng)建
NSString * str3 = [NSString stringWithFormat:@"%@,22", @"sss"];
//copy 淺拷貝,拷貝的只是地址
NSString * str4 = [str1 copy];
//mutableCopy 深拷貝,拷貝的是整個對象,開辟一個新的內(nèi)存,存入“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";
//通過單個字符分割生成數(shù)組
NSLog(@"%@",[str3 componentsSeparatedByString:@"f"]);
//通過字符集合,字符內(nèi)都有的,一律分割
NSLog(@"%@",[str3 componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"fgh"]]);
}
可變字符串
創(chuàng)建可變字符串:
//NSMutableString 可變字符串
//1.創(chuàng)建字符串
NSMutableString * str = [[NSMutableString alloc] initWithString:@"i am"];
[str appendString:@" ss"];
NSLog(@"%@", str);
//2.格式化創(chuàng)建字符串
NSMutableString * str2 = [[NSMutableString alloc] initWithFormat:@"%@ sss", @"無所謂"];
NSLog(@"%@", str2);
//3.注意,這樣創(chuàng)建的字符串默認(rèn)是不可變的字符串
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);
//根據(jù)下標(biāo)取出字符
NSLog(@"%c",[str characterAtIndex:2]);
//從第幾個下標(biāo)開始取值
NSLog(@"%@",[str substringFromIndex:3]);
//從下標(biāo)0開始,取到哪個地方
NSLog(@"%@",[str substringToIndex:5]);
//從字符串中取出范圍的
NSLog(@"%@",[str substringWithRange:NSMakeRange(0, 6)]);
NSNumber的使用
是對數(shù)字的封裝的類,因為在集合中無法使用基本數(shù)據(jù)類型,所以需要包裝
//整型
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'];