Programming with OC --Defining Classes

第一章 定义类

像在C++语言内编程一样,OC中定义类需要

1.1 定义类接口的(.h)头文件,声明属性和方法;

1.1.1 基本语法

.h类声明需要继承一个父类,父类可以是自己定义的,如果没有特别指定继承的父类,则必须继承自NSObject类。
@interface SimpleClass : NSObject

@end

由于没有命名空间概念,你必须给你的类名起个独一无二的名字,比如加上你的公司和你名字前缀,例如:XYZPerson,否则其他人使用你的类时如果类名相同则会收到编译错误,但是NS前缀不要使用,NS前缀是Apple保留前缀,这样也可以理解为什么OC中特有类都是加上NS前缀了。

@interface XYZPerson : NSObject

@end

1.1.2 属性控制

  • 设置公有属性可以使用@property语句,
@interface Person : NSObject
@property NSString *firstName;
@property NSString *lastName;
@end

在例子中我们就声明了Person类的两个NSString型的公有属性。

  • 当你不希望用户修改属性,用户只可以读属性内容时时可以在@property后增加readonly关键字。
@interface Person : NSObject
@property (readonly) NSString *firstName;
@property (readonly) NSString *lastName;
@end
  • 方法声明
语言C语言中OC中
无输入函数void SomeFunction();- (void)someMethod;
一输入函数void SomeFunction(int i);- (void)someMethod: (int) i;
多输入函数void SomeFunction(int i,double j);- (void)someMethod: (int) i secondValue:(double) j;

OC中
-(void)中的-号标记表明是个实例方法,只能在类创建的实例中调用
+号标记表明是个类方法,可以由类直接调用

上述例子是没有输入参数的方法,如果你想增加输入参数,必须按照OC特有语法编写。

1.1.3 类方法的一个应用——工厂方法

工厂方法:可以分配对象空间和执行初始化操作的一个类方法。
类方法可以在类的接口中声明(.h文件中),可以像其他实例方法一样执行,只是由类来调用,而非实例调用。

1.2 (.m)文件是方法的具体实现。

首先在.m文件中需要导入.h头文件,以便让编译器先读头文件然后再编译实现文件。导入语法是`#import` 类似于C语言中的`#include`,如下例子。
接下来不同于接口声明用`@interface`关键字,而是用`@implementation`关键字。
再下来使用NSLog函数输出字符串。
例子:

XYZPerson.h

@interface XYZPerson : NSObject
- (void)sayHello;
@end

XYZPerson.m

#import "XYZPerson.h"
@implementation XYZPerson
- (void)sayHello {
    NSLog(@"Hello, World!");
}
@end

OC语言与C语言有很多相似之处,然而在方法命名上有特有规定
如:-(void)sayhello;-(void)sayHello; 含义就不一样,如果方法命名涉及多个单词请遵循camel case规则,即第一个单词首字母小写,后面其他单词首字母均大写,使得代码更加易读,另外还有一些特殊功能,将会在后面章节介绍。

练习


使用Xcode新建一个名为XYZPerson继承自NSObject的OC类
在XYZPerson头文件接口中增加人的姓,名和生日字段,生日是NSDate类型
声明sayHello方法,并且在 .m文件中实现方法
声明名为person的工厂方法,返回值是id。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值