文档章节

2.OC入门实例

海风OSCHINA
 海风OSCHINA
发布于 2013/12/28 14:58
字数 793
阅读 220
收藏 5

OC类的入门例子:

(1)创建类头文件YtsStudent.h

#import <Foundation/Foundation.h>

//注:使用#import可以保证文件不被重复引入,所以一般不使用#include。

@interface  YtsStudent : NSObject
{ //括号中放类的成员变量,方法定义必须放在括号之外。
    int age;
    int no;
    int weight;
}

@property int weight; //@property关键词,可以自动生成weight的setter和getter方法。
@property int _weight; //为_weight自动生成setter和getter方法。

-(void)setAge:(int)_age; //age的setter方法,“:”表示后面为一个参数,()中包含参数的类型,此处为没有返回值。
-(int)age; //age的getter方法,(int)表示返回值为int类型。

-(void)setNo:(int)_no;
-(int)no;

-(void)setAge:(int)_age AndNo:(int)_no; //设置age和no的方法。“:”表示后面为一个参数,(int)表示参数类型为int,AndNo用于说明用户参数。

-(id)initWithAge:(int)_age; //构造方法
-(id)initWithAge:(int)_age AndNo:(int)_no; //构造方法
@end

(2)创建类源文件YtsStudent.m

#import "YtsStudent.h"

@implementation YtsStudent
@synthesize ID //当使用@synthesize ID指令后,编译器会判断是否存在名叫ID的成员变量,若不存在则会自动生成一个。

#pragma mark - setter
#pragma mark 设置年龄
-(void)setAge:(int)_age
{
 age = _age
}

#pragma mark - getter
#pragma mark 获得年龄
-(int)age
{
 return age;
}

#pragma mark 设置号码
-(void)setNo:(int)_no
{
 no = _no;
}

#pragma mark 获得号码
-(int)no
{
 return no;
}

#pragma mark 获得年龄和号码
-(void)setAge:(int)_age AndNo:(int)_no
{
 age = _age;
 no = _no;
}

#pragma mark - 构造方法
#pragma mark 通过传入年龄初始化一个Student对象。
-(id)initWithAge:(int)_age
{
 if(self  = [super init])
     {
         age = _age;
        return self;
     }
     return nil;
}

#pragma mark 通过传入年龄和号码初始化一个Student对象。
-(id)initWithAge:(int)_age andNo:(int)_no
{
     if(self  = [super init])
     {
         age = _age;
         no = _no;
         return self;
     }
    return nil;    
}
@end


(3)在main.m里边调用

main.m代码如下:

#import <Foundation/Foundation.h>
#import "YtsStudent.h"
int main(int argc, const char *argv[])
{
    @autoreleasepool{
         //1.先使用alloc分配内存空间,再调用init成员方法进行初始化。
        YtsStudent *student = [[YtsStudent alloc] init]; 
        //YtsStudent *student = [YtsStudent new];
        //YtsStudent *student = [[YtsStudent alloc] initWithAge:20];
  
        [student setID:2311]; //调用setID方法,参数为2311
        //[student setAge:10 andNo:3]; //调用setAgeAndNo方法
        student.age = 10; //OC2.0中,编译器遇到点语法,会直接去调用setter方法。
        NSLog(@"The age is %i,no is %i", [student age],[Student no]);
        NSLog(@"The age is %i,no is %i", student.age, student.no); //OC2.0中,编译器遇到点语法,会直接去调用getter方法。
        [student release]; //释放对象
    }
}

代码说明:

(1)跟C程序一样,OC程序的入口点依然是main函数。

(2)在Java中,有垃圾回收机制,系统会自动回收不再使用的对象;而OC是不支持垃圾回收的,需要开发人员编写代码来释放对象所占用的内存。在第6行有个@autoreleasepool{},这是跟内存管理有关的,暂时不用理解它的意思,你只需要记住:以后的OC代码都写在@autoreleasepool的{}内部。


© 著作权归作者所有

海风OSCHINA
粉丝 1
博文 4
码字总数 3053
作品 0
广州
部门经理
私信 提问
UIWebView js OC简单交互

1.js调用oc 里边的方法 使用时候需要在html 页面的事件里边调用back 方法既可以执行oc 的goback 方法; 2.oc 调用js 方法 方式一 注意:该方法会同步返回一个字符串,因此是一个同步方法,可...

冰泪_
2016/09/19
135
0
MDaemon插件之Outlook connector客户端安装设置

上篇,我们介绍了Outlook Connector 2.2.8的服务器端安装设置,接下来介绍一下客户端如何实现的。接下来的操作和截图都是在win7系、IE9.0,及Microsoft office2010的环境为例。 一、在客户端...

wbf961127
2017/11/12
0
0
Expression Blend实例中文教程系列文章汇总

Silverlight经历3年多的发展,从当初的1.0版本到现在4.0,已经逐步趋向成熟。当前市面上关于Silverlight开发的中文资料很少,介绍Expression Blend更是少之又少,为了让更多开发人员学习和了...

冷秋寒
2018/06/29
0
0
[功能优化] 包年包月实例和按量实例均已支持入门级变配企业级规格

目前ECS控制台在升降配-升级配置中,支持经典网络实例进行跨系列的迁移升级,从入门级实例升级到企业级实例规格。 现在,和也已支持从入门级变配到企业级规格。 什么是企业级实例?什么是入门...

郁苍
2018/06/25
0
0
阿里云ECS服务器突发性实例10%-15%性能基线是什么意思?

阿里云入门级突发性能实例t5类型的ECS云服务器对CPU性能是有限制的,很多用户在购买突发性能实例时不清楚10%-15%性能基线是什么意思。小编就给大家简单说说: 10%-15%性能基线 “10%-15%性能...

上987432.com
2018/11/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

将博客搬至CSDN

https://blog.csdn.net/qq_38157006

Marhal
19分钟前
1
0
unicode Java中求字符串长度length()和codePointCount()的区别

在计算字符串长度时,Java的两种方法length()和codePointCount()一度让我困惑,运行书上例子得到的长度值是相等的,那为什么要设定两个方法呢? 对于普通字符串,这两种方法得到的值是一样的...

泉天下
19分钟前
2
0
uin-app 一、学习理由

选择uni-app 理由 别人的理由 1. 5+ 有HTML5+和Native.js技术,HTML5+包含常用的跨平台的几百个API,能满足常规开发需求,而Native.js把40w原生api映 射成js对象,这样js可以直接调原生。HTM...

轻轻的往前走
21分钟前
1
0
方括号及其在命令行中的不同用法介绍

通配 方括号最简单的用法就是通配。你可能在知道“ Globbing”这个概念之前就已经通过通配来匹配内容了,列出具有相同特征的多个文件就是一个很常见的场景,例如列出所有 JPEG 文件: ls *.j...

Linux就该这么学
27分钟前
2
0
vecty 基础

gopherjs 是把 go 编译为 js 的工具。 vecty 是基于 gopherjs 的一种类似 React 的开发框架。 安装 gopherjs 和 vecty go get -u github.com/gopherjs/gopherjsgo get -u github.com/gopher......

electricface
28分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部