基本了解OC語法

基本類的使用

本章要知道的內(nèi)容有——

  • 創(chuàng)建一個類
  • 聲明方法和類方法
  • 聲明屬性 成員變量
  • 創(chuàng)建一個對象
  • NSString的使用
  • NSNumber的使用

創(chuàng)建一個類

創(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'];

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容