目的-c
導入
基本的な使用例
//类方法调用
FirstClass *sampleClass = [[FirstClass alloc] init];
[sampleClass sayHello];
//定义变量 注意驼峰命名、
int _appName;
char characterA = 'A';
//类型转换
float floatNum = 1.2;
int intNum = (int)floatNum;
NSLog(@"%d",intNum);
//常量和变量
//变量
int pearCountA = 1 ;
//常量 const关键字定义 /预编译定义常量#define MATH_PI 3.12
const float PI = 3.1223;
//日志信息打印
/*
1.输出字符类型
2.输出char类型
3.输出double类型
4.输出int
5.输出16进制
*/
NSLog(@"-----字符串 \n");
NSLog(@"-----char类型 %c \n",'A');
NSLog(@"-----double类型 %d \n",'A');
NSLog(@"-----int类型 %i \n", 1212323);
NSLog(@"-----16进制 %X \n", 12323);
NSLog(@"-----8进制 %O \n", 12222);
NSLog(@"-----float类型 %f \n",3.12322333);
NSLog(@"-----float类型保留三位 %.3f \n", 3.1234433333);
NSLog(@"----- %s \n","Objective-C");
NSLog(@"----- %@ \n",@"Swift");
/*
算术运算符的使用:
+、-、*、/、++、--、取余%
关系运算符的使用:
判断相等 ==
判断不等 !=
>、<、>=、<=、
逻辑运算符
&& 、||、!、
位运算符
&、|、^、~、<<、>>、
赋值运算符使用:
+=、-=、*=、/=、%=、<<= >>=、&=、|=、^=
a>b ? a: b
*/
//for的用法
NSArray *week = [[NSArray alloc] initWithObjects:@"AA",@"BB",@"CC",@"DD",@"EE",@"FF",@"kk" ,nil];
for(int i = 0; i< week.count; i++){
NSLog(@"-----: %@", week[i]);
}
for (NSString *day in week) {
NSLog(@"=====: %@", day);
}
[week enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop){
NSLog(@"%zi--->%@", idx, obj);
}];
NSEnumerator *en = [week objectEnumerator];
id elem;
int j = 0;
while (elem = [en nextObject]) {
NSLog(@"%d--->%@",j,elem);
j++;
}
/*
break 跳出循环
continue 忽略这一次
return 结束循环
*/
Xcode + Objective-c 使用
//command+R 実行
//command+B コンパイルは .m ファイルのみをコンパイルします
//command+N 新しいインターフェイスを作成します
//<>システム ライブラリを参照します
//""自己定義クラスを参照します
//.h ファイルのみ宣言は担当しますが、実装は担当しません
//.m ファイルは宣言されたメソッドを実装します
値の割り当てと取得
setメソッド-(void)setAge:(int)age;
getメソッド-(int)age;
クラスメソッドの使用法
1. オブジェクトメソッド
はオブジェクトによって呼び出されます
。-記号で始まります。
メンバー変数を直接使用できます。
独自のオブジェクトメソッドおよびクラスメソッドを呼び出すことができます
。2. クラスメソッドは
クラス名によって呼び出されます。
+記号で始まります。
メンバー変数を直接使用することはできません。ツールメソッドとして使用する場合にのみ
呼び出すことができます。
独自のクラス メソッドは独自のオブジェクト メソッドを呼び出すことはできません。
ドット構文の使用
実際にはset、get、メソッドなのですが、書き方が異なります。(ドット構文は set メソッドと get メソッドにのみ使用できます)
@プロパティの使用
説明:@propertyはメンバ変数の型と、対応するメンバ変数の下線を除いた部分に相当します
機能:対応するメンバ変数のsetメソッド、getメソッドの定義を自動生成します
例
拡張版例
継承の使用
書き換え: サブクラスに親クラスと同名のメソッドがある場合、サブクラス内の同名のメソッドが先に実行され、この処理を書き換えと呼びます。
書き換えの原則: まずこのクラスでこのメソッドを検索し、見つかったら実行します。見つからない場合は、直接の親クラスで検索します。見つかったら実行します。見つかったら実行します。 . NSObject クラスが見つかるまで、上位レベルの親クラスは再度検索されません。見つかった場合は、それが実行されます。 が見つかりませんでした。そのようなメソッドが存在しないことを示します。書き換えの目的: 一部を完了する
ため親クラスと同じ名前のメソッド内の独自の関数
文字列の使用
self: 1. OC でクラス名またはオブジェクト ポインターを表すために使用されます。
2. self はメソッドとメンバー変数を呼び出すことができます
。 3. self はそれ自体を使用することは禁止されており、無限ループが発生する可能性があります。
%d、%f、基本データ型のプレースホルダー
% @ オブジェクトのプレースホルダー
stringWithFormat メソッドは、結合された文字列の
記述メソッドをフォーマットします: これは、オブジェクトを記述するメソッドです。%@ を使用してオブジェクトを出力するとき、内部の記述メソッドが実際に呼び出されます。記述メソッドをオーバーライドする
目的: when an オブジェクトに多くの属性値があり、それらをすべて出力する必要がある場合は、コードを簡素化するために説明を書き換えます。
ポリモーフィズム: 1 つのものの複数の形式
前提: 継承
継承がなければ、ポリモーフィズムは存在しません
コードにおけるポリモーフィズムの具体例は、親クラス ポインタが子クラス オブジェクトを指すことです。
高度な文字列
//長さを調べる
NSUInteger len = [string length];
NSLog(@"len = %lu",len);
//文字の 1 つを取得し、添え字は 0 から始まります
char a = [stringcharacterAtIndex:1];
NSLog (@ "%c",a);
// 2 つの文字列が等しいかどうかを比較
BOOL isE = [string isEqualToString:string2];
// 2 つの文字列のサイズを比較し、
大文字と小文字を区別します NSComparisonResult result = [string Compare:string2];
昇順NSOrderedAscending
等しい NSOrderedSame
降順 NSOrderedDescending
//大文字と小文字を区別せず、2 つの文字列のサイズを比較します
NSComparisonResult result1 = [string Compare:string2 options:NSCaseInsensitiveSearch];
//大文字と小文字を変換
NSString *string3 = [string uppercaseString];//大文字
NSString *string4 = [string2 lowercaseString];//小文字
NSString *string5 = [string2 CapitalizedString];//最初の文字を大文字にする
NSRange range = [string rangeOfString:@"da ye" options:NSBackwardsSearch];//右から左に文字列を検索します
可変文字列
配列 (不変、可変)
/*不可变数组*/
NSArray *array = @[@"aa",@"bb",@"cc",@"dd",@"ee"];
NSLog(@"Array = %@",array);
//对象方法创建数组
NSArray *array2 = [[NSArray alloc] initWithArray:array];
NSArray *array3 = [[NSArray alloc] initWithObjects:@"wo",@"shi",@"wz",@"ss", nil];
//类方法创建数组
NSArray *array4 = [NSArray arrayWithArray:array];
NSArray *array5 = [NSArray arrayWithObjects:@"wo",@"shi",@"wz",@"ss", nil];
//求元素个数
NSArray *array6 = @[@"zhe",@"shi",@"yi",@"ge",@"oc"];
NSUInteger count =[array6 count];
NSLog(@"%lu",count);
//按下标取一个元素
NSString *str1 = [array6 objectAtIndex:3];
NSLog(@"string1 = %@",str1);
//取最后一个元素
NSString *str2 = [array6 lastObject];
NSLog(@"stringlast = %@",str2);
//取第一个元素
NSString *str3 = [array6 firstObject];
NSLog(@"stringfirst = %@",str3);
//取多个元素
NSArray *array7 = [array6 subarrayWithRange:NSMakeRange(1,2)];
NSLog(@"Array4 = %@",array7);
//遍历
for (NSString *str4 in array6) {
NSLog(@"%@",str4);
}
//数组拼接
NSString *str5= [array6 componentsJoinedByString:@"&&"];
NSLog(@"stringCOM = %@",str5);
//字符串分割
NSArray *array8= [str5 componentsSeparatedByString:@"&&"];
NSLog(@"stringSEP = %@",array8);
/*可变数组*/
//创建可变数组
NSMutableArray *arrs = [[NSMutableArray alloc]init];
//对象方法创建
NSMutableArray *arrs1 = [[NSMutableArray alloc] initWithArray:@[@"zhe",@"shi",@"bj",@"chao",@"yang"]];
//类方法创建
NSMutableArray *arrs2 = [[NSMutableArray alloc] initWithObjects:@"wo",@"zai",@"xue",@"xi",@"ios", nil];
//通过已存在的数组创建可变数组
NSMutableArray *arrs3 = [NSMutableArray arrayWithArray:arrs1];
NSMutableArray *arrs4 = [NSMutableArray arrayWithObjects:@"wo2",@"zai2",@"xue2",@"xi2",@"ios2", nil];