自學iOS開發系列 OC(block)

2021-07-25 05:22:08 字數 2393 閱讀 7973

1.block:塊語法,是一種新的語法結構。學習的時候可以模擬於函式指標。

2.block和函式指標對比

#import 

//宣告函式

int add(int,int);

int main(int argc, char * argv) ;

nslog(@"%d",block(3,6));

}}//實現函式

int add(int a,int b)

3.block宣告和實現寫在一起

#import 

int main(int argc, char * argv) ;

voidblock();

}}

4.__block關鍵字

#import 

int main(int argc, char * argv) ;

changevar(15);

nslog(@"%d",number);

}}

5.block傳值

①建立supermarket類

supermarket.h

#import 

@inte***ce

supermarket : nsobject

@property (nonatomic, copy) void(^byvalueblock)(nsstring *);

- (void)begin;

- (void)finish;

@end

supermarket.m

#import "supermarket.h"

@implementation

supermarket

- (void)begin

-(void)finish

@end

②建立student類

student.h

#import 

@inte***ce

student : nsobject

- (void)buy;

@end

student.m

#import "student.h"

#import "supermarket.h"

@implementation

student

-(void)buy ;

[supermarket begin];

}@end

③main.m

#import

#import

#import

"student.h"

int main(int argc, char * argv)

}

6.block作為引數

①新建market類

market.h

#import 

typedef

void (^marketblock)(void);

@inte***ce

market : nsobject

- (void)beginwithmoney:(marketblock)block;

@end

market.m

#import "market

.h"@implementation market

-(void)beginwithmoney:(marketblock)block

@end

②建立person類

person.h

#import 

@inte***ce

person : nsobject

- (void)buy;

@end

person.m

#import "person.h"

#import "market.h"

@implementation

person

-(void)buy ];

}@end

③main.m

#import

#import

#import

"person.h"

int main(int argc, char * argv)

}

自學iOS開發系列 C語言(陣列)

c語言的編譯和執行 開啟終端輸入 touch arr.c open arr.c 在開啟的檔案中輸入 include int main int argc,const char argv command s儲存 gcc o arr arr.c arr 終端輸出hello world 陣列 一 一維陣列 ...

自學iOS開發系列 OC(類別和擴充套件)

類別 category 1.類別的作用 為已知的型別增加新的方法 2.類別的侷限性 不能新增例項變數 方法名衝突,類別中方法的優先順序會更高 3.類別的應用場景 將類的實現分散到不同的檔案或框架中 4.建立category檔案 新增型別和類別名稱 5.新建類別,在乙個字串後面追加乙個字串,返回乙個新...

iOS開發系列

ios開發系列 ui 自定義tableview 本章實現效果 我們使用mvc架構來實現自定義tableview,具體的mvc介紹請自行,在本章中不作為主要內容講解。model層 datasource.h import inte ce datasource nsobject nsarray getus...