ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Objective-C 入门

2022-07-26 22:03:49  阅读:136  来源: 互联网

标签:p1 入门 int char Person 参数 Objective 方法


NSString 字符串

C 中字符串的存储方式

  • 使用字符数组
  • 使用字符指针

NS 前缀

NeXTSTEP -> Cocoa -> Fundation 框架

@符号

  • 将 C 字符串转成 OC 字符串
  • OC中绝大部分关键字都是以@开头

代码示例:

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有