Objective-C 入门
作者:互联网
NSString 字符串
C 中字符串的存储方式
- 使用字符数组
- 使用字符指针
NS 前缀
NeXTSTEP -> Cocoa -> Fundation 框架
@符号
- 将 C 字符串转成 OC 字符串
- OC中绝大部分关键字都是以@开头
代码示例:
NSString *s1 = @"jack";
//使用 %@ 占位符 输出 OC 字符串
NSLOG(@"hello, I'm %@", s1);
OC程序的编译与链接
-
编写代码
-
使用编译器将源代码编译成目标文件
cc -c xx.m
a.预处理
b.检查语法
c.编译
- 链接
cc xx.o -framework Fountation
- 链接成功后,生成一个 a.out 文件,执行就可以了
OC 与 C 各个阶段文件后缀名对比
编程语言 | 源文件 | 目标文件 | 可执行文件 |
---|---|---|---|
C | .c | .o | .out |
OC | .m | .o | .out |
OC 中的数据类型
1) OC 中支持 C 语言中的所有数据类型
a.基本数据类型
int double float char
b.构造类型
数组 结构体 枚举
c.指针类型
int *p1
d.空类型
void
e.typedef自定义类型
2) BOOL 类型
可以存储 YES, NO
BOOL 类型本质
typedef signed char BOOL
YES、NO 本质
#define YES ((BOOL)1)
#define NO ((BOOL)0)
举例:
BOOL b2 = YES;
char b3 = 1;
3) Boolean 类型
可以存储 true/false
Boolean 本质
typedef signed char Boolean
true/false 本质
#define true 1
#define false 0
举例
Boolean b1 = true;
Boolean b2 = 0;
-
class 类型,类
-
id 类型,万能指针
-
nil,跟 null 差不多
-
SEL 方法选择器
-
block 代码段
类
定义类
举例1:定义一个类
//-> 类的声明
@interface Person:NSObject
{
// 声明变量
NSString *_name;
int _age;
float _height;
}
// 声明方法
@end
//-> 类的实现
@implementation Person
//方法的实现
@end
创建对象(类的实例)
语法:类 *对象名 = [类名 new];
举例 2:
int main(int argc, const char * argv[]) {
Person *p1 = [Person new];
return 0;
}
对象的用法
访问对象的属性
1)默认是不允许访问的,需要加一个 @public 关键字
2)访问对象属性的方式
对象名->属性名 = 值;
对象名->属性名;
(*对象名).属性名;
实例:
int main(int argc, const char * argv[]) {
Person *p1 = [Person new];
p1->_name = @"lisi";
(*p1)._name = @"jo";
NSLog(@"%@", p1->_name);
return 0;
}
方法的声明实现与调用
1)无参数的方法
方法的定义
// 方法的声明: - (返回值类型)方法名称;
@interface Person : NSObject
{
@public
NSString *_name;
int *_age;
float _height;
}
//定义了一个无参数,返回值为空的方法
- (void)run;
@en
@implementation Person
- (void)run {
NSLog(@"我在跑");
}
方法的调用
// 方法的调用 [对象名 方法名];
int main(int argc, const char * argv[]) {
Person *p1 = [Person new];
[p1 run];
return 0;
}
2)带一个参数的方法
方法的定义
// - (返回值类型)方法名称:(参数类型)形参名称;
- (void)eat:(NSString *)food;
方法的调用
int main(int argc, const char * argv[]) {
Person *p1 = [Person new];
[p1 eat:@"肉肉"];
return 0;
}
注:方法签名中的数据类型都需要用 () 括起来
3)带多个参数的方法
// - (返回值类型)方法名称:(参数类型)形参名称1 :(参数类型2)形参名称2;
@interface Person : NSObject
{
@public
NSString *_name;
int *_age;
float _height;
}
- (void)run;
- (void)eat:(NSString *)food;
// 多参数方法
- (int)sum:(int)a :(int)b;
@end
@implementation Person
- (void)run {
NSLog(@"我在跑");
}
- (void)eat:(NSString *)food {
NSLog(@"我在吃%@", food);
}
// 多参数方法的实现
- (int)sum:(int)a :(int)b {
return a + b;
}
@end
注:这里方法的名称是 sum: :
方法的调用
// [对象名称 方法名称:实参1 :实参2];
int main(int argc, const char * argv[]) {
Person *p1 = [Person new];
[p1 eat:@"肉肉"];
// 多参数方法的调用
int result = [p1 sum:1 :2];
NSLog(@"%d", result);
return 0;
}
方法声名的规范
如果只有一个参数,要求最好这个方法名叫作 xxxWith:
如果有多个参数,建议
方法名With:(参数类型)参数名称 and:(参数类型)参数名称 and:(参数类型)参数名称;
@interface Person : NSObject
{
@public
NSString *_name;
int *_age;
float _height;
}
- (int)sumWith:(int)num1 and:(int)num2;
@end
@implementation Person
- (int)sumWith:(int)num1 and:(int)num2 {
return num1 + num2;
}
@end
int main(int argc, const char * argv[]) {
Person *p1 = [Person new];
// 多参数方法的调用
int s2 = [p1 sumWith:10 and:20];
NSLog(@"%d", s2);
return 0;
}
标签:p1,入门,int,char,Person,参数,Objective,方法 来源: https://www.cnblogs.com/lemos/p/16522773.html