创建一个类
鼠标右键单击HelloWorld工程,弹出列表选择框后 单击 New File… 在工程中添加一个新的文件。
选择当前创建类的父类,这里选择NSObject 表示继承普通的object类,UItableViewCell 与 UIview 这两个是ios显示相关的,这里暂时先不说明。继续点击Next创建这个类。
单击Save后MyClass这个类就完整的创建完毕。它帮我们生成了两个文件 MyClass.h 与 MyClass.m, 这个和C++ 中的.h 与.cpp 基本一样 。只不过在这里.h 是去写成员对象名 成员方法名 等, 而.m是去写 具体成员方法 与成员对象 的相关实现。
MyClass.h
Foundation os下的一个大的框架,它包括所有的类 方法 集合 等等,所以这里需要导入它。
@interface 类的开始的标识符号 ,好比Java 或 C 语言中的Class
@end 类的结束符号
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#import <Foundation/Foundation.h> @interface MyClass : NSObject { //成员变量 NSString * mName; int mNumber; } //成员方法 - (id)Myinit; -(void)setInfo:(NSString *) name: (int) number; -(void)printInfo; @end |
MyClass.m
@implementation 标识符 作用实现.h中 的具体方法与对象
@end 同样为类的结束符号
-(id)init 这个方法 用于类的初始化创建,每一个类在创建的时候需要调用init方法,使用父类拿到self指针后,在这里可以做一些子类初始化的工作。
-(id)init 方法名称可以任意修改,但是alloc的时候需要写入修改后的名称,这里我们写成
-(id) MyInit
-(void)setInfo 方法 用于参数的传递 和C 与java 有点区别 习惯了就好了 嘿嘿
-(void)printInfo 方法 输出成员变量内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
#import "MyClass.h" @implementation MyClass - (id)Myinit { self = [super init]; if (self) { // 在这里进行初始化的工作 [self setInfo: @"雨松MOMO":9527]; } return self; } -(void)setInfo:(NSString *) name: (int) number { //参数的传递赋值 mName = name; mNumber = number; } -(void)printInfo{ //输出log信息 NSLog(@"我的名字: %@",mName); NSLog(@"我的编号: %d",mNumber); } @end |
HelloWorldViewController.h
MyClass * 用来声明一个指向MyClass的指针
1 2 3 4 5 6 7 8 9 10 11 |
#import <UIKit/UIKit.h> #import "MyClass.h" @interface HelloWorldViewController : UIViewController { MyClass *myClass; } @end |
HelloWorldViewController.m
-(void)viewDidLoad 方法 为界面读取时调用 这里做语法测试 暂时相关代码先写在这里
Myinit 方法 就是我们在MyClass中重写的初始化方法,这里初始化直接调用我们自己写的方法初始化。
priintInfo 方法 通过创建后的MyClass指针 可以直接调用 类方法 输出信息
release 方法 指针使用完毕 一定要释放掉 如果不释放的话会造成内存的白白浪费。积少成多,这件事情很可怕的。
- 本文固定链接: https://www.xuanyusong.com/archives/401
- 转载请注明: 雨松MOMO 于 雨松MOMO程序研究院 发表
捐 赠写博客不易,如果您想请我喝一杯星巴克的话?就进来看吧!
error:Cannot assign to ‘self’ outside of a method in the init family原因:只能在init方法中给self赋值,Xcode判断是否为init方法规则:方法返回id,并且名字以init 大写字母开头 其他 为准则。例如:- (id) initWithXXX;出错代码:- (id) Myinit{ self = [super init]; ……}解决方法:- (id) initWithMy{ self = [super init];}
error:Cannot assign to ‘self’ outside of a method in the init family原因:只能在init方法中给self赋值,Xcode判断是否为init方法规则:方法返回id,并且名字以init +大写字母开头+其他 为准则。例如:- (id) initWithXXX;出错代码:- (id) Myinit{ self = [super init]; ……}解决方法:- (id) initWithMy{ self = [super init];}