IOS开发基础Object-C(02 )—第一个OC类

2024-05-04 07:48

本文主要是介绍IOS开发基础Object-C(02 )—第一个OC类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、创建一个类

1、创建一个新文件,选择OS X下Cocoa(IOS下Cocoa Touch)中Objective-C class模板
2、输入类名,如:Student。在Subclass of(子类属于)选项中,选择NSObject。
可以这么说,几乎所有的类都继承与NSObject。
官网关于Cocoa框架有如下介绍:
Cocoa supplies two root classes: NSObject and NSProxy.
这就解释了所谓的“几乎”。剩下不继承NSObject的都继承NSProxy,因为NSProxy的应用比较特殊,在Cocoa程序中比较少见,具体的例子可以参考官方API说明文档中关于NSProxy类的介绍,里面讲到了一些例子,比如NSDistantObject。
3.创建一个类后,在项目中会生成两个文件,Student.h文件和Student.m文件。

扩展:源代码文件扩展名对比

源代码文件扩展名对比

从上图可以看到OC中的类含有两个文件:
.h 文件,类的声明文件,用于生命变量、方法,不作任何实现。
.m 文件,类的实现文件,用于实现.h文件中的方法。


特别注意:在初学阶段,先不要勾选Automatic Reference Counting,在上一篇博客中已经说到,OC不同于Java的地方有一点就是OC没有垃圾回收机制,使用的是引用计数机制,需要手动回收,这一点我到后面的内存管理上会讲,大家先不要着急。ARC(Automatic Reference Counting)机制就是省掉了我们自己回收垃圾的代码,他会自动识别进行内存管理。如果我们想要弄清楚OC回收内存的原理,就先不要勾选ARC,等我们弄清楚原理以后再勾选也不迟。现在我们的目的就是学习。


二、类的声明

1、@interface关键字
打开Student.h文件,声明一个类,代码如下:

//声明一个类
@interface StudentNSobject{int age;  //属性要放在大括号里//int no;
}  @end

上述的代码声明了一个类,类名SimpleClass,继承自NSobject 。定义的方法属性放在上面两个@语句之间。属性放在大括号里。
2、get方法

-(int) age;

age的get方法默认与属性名相同,还有一点需要补充的,就是在OC中,动态方法用“-”表示,静态方法用“+”表示。

3、set方法

-(void) setAge:(int ) newAge;

一个“:”对应一个参数,如果有两个参数,则:

-(void) setAge :(int)newAge andNo:(int) newNo;

三、类的实现

1、导入头文件

 #import <Foundation/Foundation.h>#import "Student.h"

2、实现类中的方法,关键字:@implementation

@implementation Student
//get方法的实现
-(int)age{return age;
}
//set方法的实现
-(void)setAge:(int)newAge andNo:(int)newNo{age=newAge;no=newNo;
}
@end

四、在main.m中调用
1、先导入头文件

 #import "Student.h"

2、创建一个对象
(1)调用一个静态方法alloc来分配内存

 Student *stu=[Student alloc];

(2)调用一个动态方法init来进行初始化

stu=[stu init];

以上流程大家理解了吧,那就垃圾代码合在一起:

Student *stu=[[Student alloc] init ];

3、调用setAge方法

 [stu setAge:100];

4、调用get方法

 int age=[stu age];

5、打印一下

NSLog(@"年龄:%i",age);

6、释放对象

[stu release];

这一部分看不懂的会在以后内存管理中单独说,大家不要着急。

注意:以上方法都是为了好理解,方法比较复杂,以后熟悉以后我还会为大家逐渐介绍几种简单方法,两行代码就能代替get,set方法,怕大家理解不了所以先上直观方法。有OC基础的请自动略过

这篇关于IOS开发基础Object-C(02 )—第一个OC类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/958691

相关文章

mybaits基础增删改查-------mybatis(四)

Mybatis的增删改查 mybatis流程: 1 创建实体类及接口方法 2 创建全局配置文件 configuration.xml 3 创建 sql 映射文件 BlogMapper.xml 4 将全局文件中维护 sql映射文件配置 5 调用java API 执行相关sql操作 注意sqlSession是线程非安全的 实体java类: package model;public class Blo

sort常用排序模式---------shell基础篇(三)

sort 排序命令使用 表达式意义sort -c test测试文件“test”是否已经经过排序,一般用处不大sort -k1 test.txt按照第1域对文件test.txt进行排序,日常可以用来对合并的日志文件进行时间排序sort -k1 -m log1.txt log2.txt按照第一域进行排序后合并输出到控制台,建议使用“>>” 将合并内容输出到另一个文件中sort -t / -k3 te

bimface开发实战-vue版

效果 演示地址 框架 bimface + vue3.0 代码地址 gitee地址 使用 yarn install yarn serve

我的第一个chrome扩展

新建文件夹helloworld 新建名为manifest.json的文件 name: 扩展名称version: 扩展版本description: 扩展描述icons: 扩展相关图标文件的位置version: 数字组成的版本browser_action: 指定扩展的图标放在chorme的工具栏中的属性 6.1 default_icon 工具栏图标的位置 6.2 default_title

iOS 添加好友请求要怎么注册监听

协议:IChatManagerDelegate代理:[[EaseMob sharedInstance].chatManager addDelegate:self delegateQueue:nil];方法: /*! @method @brief 接收到好友请求时的通知 @discussion @param username 发起好友请求的用户username @param messa

iOS 环信UI集成步骤

新建项目, 把环信的依赖库以及SDK导入到项目中, 添加pch文件, 把项目的Other Linker Flags 改成 -ObjC把环信demo的几个文件导入项目: 3rdparty, Category, Custom, Resources, Class ->Chat -> ChatView, 还有它的define文件ChatDemoUIDefine.h在pch文件导入头文件

iOS 判断网络类型

##1.引入Reachability文件夹 在AFNetworking网络请求库中有一个子文件Reachability,这里面有一个类AFNetworkReachabilityManager是用来专门处理网络类型的。 把这个类拷贝到你的工程目录下。 ##2.引入相关的头文件 #import "AFNetworkReachabilityManager.h"#import <CoreTel

如何从iOS Developer 中下载xcode dmg

最新的xcode beta 版本可以直接下载dmg安装包,但是最新的xcode正式版本却只能更新。很多时候需要在多台机器上安装xcode,显然就需要dmg。自从出了xcode ghost 事件之后,又担心第三方的xcode下载会被植入后门,其实苹果开发者官网有dmg的安装包下载,只是隐藏的比深。 点击链接:https://developer.apple.com/downloads/ 这里面不但

iOS UITableView

一、创建UITableView 1.- initWithFrame:style: - (instancetype)initWithFrame:(CGRect)framestyle:(UITableViewStyle)style 二、列表视图的配置 1.style typedef enum {UITableViewStylePlain, //普通类型UITableViewStyleGr

iOS 延迟执行的几种方法

1、performSelector方法 - (void)viewDidLoad {[super viewDidLoad];NSLog(@"当前时间:%@",[NSDate date]);[self performSelector:@selector(delayMenthod) withObject:nil afterDelay:2.0];}- (void)delayMenthod{NSLog(