Object C初学学习笔记(1)
最近开始学习IOS编程,自然开始接触了Object C 语言,下午看着例子进行了手动尝试了编码,对整个语言有基本的了解。
在Xcode创建Object C class文件,基本的class文件结构相比java语言 ,还是是简单多了,整体的文件结构
首先是头文件,后缀是以 .h头文件,这个文件定义了class的基本结构,有点类似一个类模板,定义class的结构信息
头文件部分
#import <目录/头文件.h> //代表只引入系统库的类的头文件
#import "目录/头文件.h" // 代表默认从当前路径下搜索是否存在对应的头文件,如果不存在,则从系统库里面
类变量部分
static 变量类型 变量名 = 初始值 //其中初始值可以没有
类定义以及成员变量定义部分,框架
@interface XXClass:NSObject <ProtocolA,ProtocolB>{
@public int a;
@private float b;
@protected int c;
}
@代表Object C 在C语言的基础上 新引入的关键字的前缀
@interface代表这个是一个类定义,这个和java里面的interface不一样
XXClass代表定义的类名
:NSObject 代表继承了NSObject对象
<ProtocolA,ProtocolB> 代表实现了ProtocolA 和 ProtocolB 协议,这个Protocol和java语言里面的interface意义相同
类成员的变量是在 变量作用域 变量类型 变量名
接下来定义方法
-(void) print ;
-(void) setterA : (int) a;
-(void) setterABC : (int) a andB:(float) b andC:(int) c
+(int) toString ;
方法的定义为 方法所有者(返回值):方法名:(参数类型) 参数变量 下一个参数说明:(参数类型) 参数变量名 下一个参数说明 : (参数类型) 参数变量
其中 +代表类方法 -代表实力方法 在java里面相当于是否由static修饰符
其中 方法定义里面多了一个参数说明,这个参数说明有点怪,第一个参数是不能由参数说明的,如果由多个参数,从第二个参数开始,才允许由参数说明,这个参数说明一般情况是在重载的时候使用的,比如我有多个setterValue方法,第一个方法由一个变量,第二个方法有两个变量 ,那么第二个方法里面可以说明第二个变量干嘛用的
最后一行就是类定义结束 使用 @end标签就可以了
下面是一个完整的类定义
#import <Foundation/Foundation.h>
staticint i = 0;
@interface SampleTwoPerson : NSObject<NSCoding>{ NSString *name ; float weight ; }
-(SampleTwoPerson*) initNameAndWeight : (NSString*) name andweight:(float) weight andObject:(NSString *) obj; -(NSString *) getterName ; -(float) getterWeight; -(NSString *) toString ;
@end |
接下来是写class的实现文件,实现文件后缀是.m
首先还是引入头文件,这里面只需要引入定义的class头文件就可以了
#import "XXClass.h"
下面就是实现了
@implementation XXClass
方法定义 {
code
//方法实现代码
};
@end
方法定义和头文件XXClass.h中一样,只需要去掉最后面一个;号即可
同时还需要实现 类定义里面 需要实现的 Protocol 方法即可。
#import "SampleTwoPerson.h"
@implementation SampleTwoPerson
-(SampleTwoPerson*) initNameAndWeight : (NSString*) name1 andweight:(float) weight1 andObject:(NSString *) obj; { self->name = name1; self->weight = weight1; returnself; };
-(NSString *) getterName { return name; } -(float) getterWeight{ return weight; } -(NSString *) toString { return name; }
//下面两个方法是类定义中的 NSCoding 协议的实现 - (void)encodeWithCoder:(NSCoder *)aCoder{
} - (id)initWithCoder:(NSCoder *)aDecoder{ returnnil; }
@end |
以上就是Object 语言的class文件定义的基本语法。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架