基本了解OC语法

基本类的使用

本章要知道的内容有——

  • 创建一个类
  • 声明方法和类方法
  • 声明属性 成员变量
  • 创建一个对象
  • NSString的使用
  • NSNumber的使用

创建一个类

基本了解OC语法_第1张图片
创建新文件
基本了解OC语法_第2张图片
填写类名

语言选择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 

//这是.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 

//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'];

你可能感兴趣的:(基本了解OC语法)