其他分享
首页 > 其他分享> > Objective-C 入门

Objective-C 入门

作者:互联网

NSString 字符串

C 中字符串的存储方式

NS 前缀

NeXTSTEP -> Cocoa -> Fundation 框架

@符号

代码示例:

NSString *s1 = @"jack";

//使用 %@ 占位符 输出 OC 字符串
NSLOG(@"hello, I'm %@", s1);

OC程序的编译与链接

  1. 编写代码

  2. 使用编译器将源代码编译成目标文件

cc -c xx.m

a.预处理

b.检查语法

c.编译

  1. 链接

cc xx.o -framework Fountation

  1. 链接成功后,生成一个 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;
  1. class 类型,类

  2. id 类型,万能指针

  3. nil,跟 null 差不多

  4. SEL 方法选择器

  5. 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