Objective-C文法之Object對象的那些事兒
雨松MOMO原創文章如轉載,請註明:轉載至我的獨立網域名稱部落格雨松MOMO程式研究院,原文地址:http://www.xuanyusong.com/archives/401
建立一個類
滑鼠右鍵單擊HelloWorld工程,彈出列表選擇框後 單擊 New File... 在工程中添加一個新的檔案。
選擇建立一個Objective-C.class的 檔案,點擊next繼續建立。
選擇當前建立類的父類,這裡選擇NSObject 表示繼承普通的object類,UItableViewCell 與 UIview 這兩個是ios顯示相關的,這裡暫時先不說明。繼續點擊Next建立這個類。
選擇類的名稱,這裡預設的名稱是MyClass,這裡只是test我就不修改了~
單擊Save後MyClass這個類就完整的建立完畢。它幫我們產生了兩個檔案 MyClass.h 與 MyClass.m, 這個和C++ 中的.h 與.cpp 基本一樣 。只不過在這裡.h 是去寫成員對象名 成員方法名 等, 而.m是去寫 具體成員方法 與成員對象 的相關實現。
MyClass.h
Foundation os下的一個大的架構,它包括所有的類 方法 集合 等等,所以這裡需要匯入它。
@interface 類的開始的標識符號 ,好比Java 或 C 語言中的Class
@end 類的結束符號
#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 方法 輸出成員變數內容
#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的指標
#import <UIKit/UIKit.h>#import "MyClass.h"@interface HelloWorldViewController : UIViewController{ MyClass *myClass;}@end
HelloWorldViewController.m
-(void)viewDidLoad 方法 為介面讀取時調用 這裡做文法測試 暫時相關代碼先寫在這裡
Myinit 方法 就是我們在MyClass中重寫的初始化方法,這裡初始化直接調用我們自己寫的方法初始化。
priintInfo 方法 通過建立後的MyClass指標 可以直接調用 類方法 輸出資訊
release 方法 指標使用完畢 一定要釋放掉 如果不釋放的話會造成記憶體的白白浪費。積少成多,這件事情很可怕的。
- (void)viewDidLoad{ [super viewDidLoad]; //建立對象 myClass = [[MyClass alloc] Myinit]; //調用對象方法 [myClass printInfo]; //釋放指標 [myClass release]; }
運行後顯示的結果