導入頭文件有兩種方法:使用引號或者使用尖括號
帶尖括號的語句是用來導入系統頭文件的,而帶引號的語句則說明導入的是項目本地的頭文件
複合與繼承
X是一個Y,則可使用繼承;若X有一個Y,則可使用復合
創建新對象的不同方法:
[類名 new]
[[類名 alloc] init ]
main()函數創建(通過alloc)並初始化(通過init)了一個NSAutoreleasePool 實例
int main(int argc,const char * argv[]){
NSAutoreleasePool * pool=[[NSAutoreleasePool alloc]init];
//insert code here...
[pool drain];
return 0;
}
+(id)stringWithFormat:(NSString *)format,...;
若在聲明方法時添加了加號,那麼就是把這個方法定義為類方法。這個方法屬於類對象(而不是類的實例對象)并且通常用於創建新的實例。我們稱這種用來創建新對象的類方法為工廠方法。類方法可用來訪問全局數據。
若所創建的大部分方法都實例方法,要用前導減號(-)來開始聲明。這些方法將會在某個對象實例中運行,比如獲取一個Circle的顏色。
若某方法用來實現常規功能,比如創建一個實例對象或訪問一些全局類數據,則最好使用前層加號(+)將它聲明為類方法。
if(self=[super init])意思
若要超類(這裡是NSObject)可以完成所需的一次性初始化,需要調用[super init]。init方法返回的值(id型數據,即泛型對象指針)描述了被初始化的對象。
將[super init]的結果賦給self是objective-c的標準慣例。這麼做是為了防止超類在初始化過程中返回的對象不同原先創建的對象。
@interface Car:NSObject
{
Engine *engine;
Tire *tires[4];
}
-(void)print;
@end
@implementation Car
-(id)init
{
if(self=[super init]){
engine=[Engine new];
tires[0]=[Tire new];
tires[1]=[Tire new];
tires[2]=[Tire new];
tires[3]=[Tire new];
}
return(self);
}//init
-(void)print
{
}
@end
UITableViewDataSource提供了表视图的数据源,下表列出了常见的表视图数据源方法:
Method |
Description |
tableView:numberOfRowsInSection: |
特定Section内的行数 |
numberOfSectionsInTableView: |
特定数据源的表视图的Section数目 |
tableView:cellForRowAtIndexPath: |
从数据源获取单元格内容并放到特定的行上 |
sectionIndexTitlesForTableView: |
获取一个数据源的表视图的标题 |
tableView:commitEditingStyle:forRowAtIndexPath |
提交单元格内容的修改 |
talbeView:canEditRowAtIndexPath: |
通过返回一个Boolean类型的值来通知表视图某一行能否修改 |
tableView:canMoveRowAtIndexPath: |
通过返回一个Boolean类型的值来通知表视图某一行能否被移动 |
tableView:moveRowAtIndexPath:toIndexPath: |
允许某一个表视图单元格被移动 |
表视图数据源接口提供了表视图数据源操作的常用方法,其中tableView:numberOfRowsInSection和tableView:cellForRowAtIndexPath:是每一个表试图的数据源必须实现的两个方法,前者告诉表视图内有多少行单元格,而后者告诉表视图每一个单元格的内容是什么。程序通过实现这两个方法,可以提供一个表视图所需要的基本信息并供表视图调用。