一:
//// main.m
#import
#import "student.h"
//函式宣告
int maxvalue (int a, int b);
//函式定義
int maxvalue (int a, int b)
//函式指標型別
//int (*)(int, int);
//函式指標變數
int (*aaa)(int, int) = null;
//重新命名資料型別
typedefint (*aaa) (int, int);
//函式指標變數;i
aaa aa = null;
int main(int argc, const char * argv)
//注:1.引數名不能夠省略
//2.如果block有返回值型別, 需要使用return返回資料
blockname = ^(int a, int b);
int (^blockname1)(int, int) = ^(int a, int b);
//block的使用(呼叫block)
//block名字(實參1, 實參2, ...)
nslog(@"%d",blockname1(4, 9)) ;
//注: block定義時, block塊中的**不會執行, block呼叫時block塊中的**才會執行!
//定義乙個block, 實現列印"hello,world!"
void (^blockprint)();
blockprint = ^();
blockprint();
//寫乙個返回值為整型引數為nsstring (僅乙個引數)的功能,現將字串轉換為整型的功能
int (^convert)( nsstring *) = ^(nsstring *str);
int a = convert(@"5我1愛2你3");
nslog(@"%d",a );//5
//block的應用
//1.使用typedef重新命名block型別
typedef int (^blocktype)(nsstring *);
blocktype convert1 = ^(nsstring *str);
int b = convert1(@"564545");
nslog(@"%d",b);
//2.內部訪問變數
//注: a.block內部可以訪問區域性變數,但是不能修改區域性變數,想要修改全域性變數, 需要在變數前加修飾符__block
可以訪問並修改全域性變數
__block int a1 = 10;
void (^print)()=^();
print();
print();
print();
print();
print();
作為方法的引數
nsarray *namearray = [nsarrayarraywithobjects:@"zhangsan",@"lisi",@"wangwu",@"zhaoliu", nil];
nsarray *sortarray = [namearraysortedarrayusingselector:@selector(compare:)];
nslog(@"%@",sortarray);
nsarray *numberarray= [nsarray arraywithobjects:@"1",@"2",@"3",@"21",nil];
//只能排10以下
nsarray *sortarray1 = [numberarraysortedarrayusingselector:@selector(compare:)];
nslog(@"%@",sortarray1);
//完善的排序
nsarray *sortarray2 = [numberarraysortedarrayusingcomparator:^nscomparisonresult(nsstring *obj1, nsstring *obj2) else if([obj1 intvalue]==[obj2 intvalue])else
}];nslog(@"%@",sortarray2);
// nsarray *floatarray = [nsarray arraywithobjects:@"2.3", @"5.8",@"54.45",@"545.2", nil];
//使用block對陣列進行降序排列
student *student = [studentstudentwithname:@"wsan"number:56score:15.23];
nslog(@"%@",student.name);
nslog(@"%@",[student description]);
student *student1 = [student studentwithname:@"esi" number:15score:45.2323];
student *student2 = [student studentwithname:@"awu" number:45score:51.323];
nsarray *stuarray = [[nsarray alloc]initwithobjects:student,student1,student2,nil];
//按照學號由高到底進行排序
nsarray *sortarray8 = [stuarraysortedarrayusingcomparator:^nscomparisonresult(student *obj1, student*obj2) else if(obj1.number ==obj2.number)else
}];for (student *temp in sortarray8)
//姓名從a-z
nsarray *sortarray9 = [stuarraysortedarrayusingcomparator:^nscomparisonresult(student *obj1,student *obj2) else if(obj1.name == obj2.name)else
return [obj1.name compare:obj2.name];
}];for (student *temp1 in sortarray9)
////語法糖
//100
nsnumber *n = [nsnumbernumberwithinteger:100];
nsnumber *n1 = @100;
nsstring *string = [[nsstring alloc]initwithstring:@"123"];
nsstring *string1 = @"123";
nsarray *arr = [nsarray arraywithobjects:@"a",@"b", nil];
nsarray *arr1 = @[@"a", @"b",@"c"];
nslog(@"%@",[arr1 objectatindex:2]);
nslog(@"%@",arr1[2]);
nsdictionary *dic = [nsdictionarydictionarywithobjectsandkeys:@"111",@"1",@"2",@"222", nil];
nsdictionary *dic1 = @;
nslog(@"%@",[dic objectforkey:@"2"]);
nslog(@"%@",dic[@"2"]);
return0;
}二:
//// student.h
#import
@inte***ce student : nsobject
//姓名, 學號, 分數
//遍歷構造器, 自定義初始化方法
@property (nonatomic,retain)nsstring *name;
@property nsinteger number;
@propertycgfloat score;
- (id)initwithname:(nsstring *)name number:(nsinteger)number score:(cgfloat)score;
+ (id)studentwithname:(nsstring *)name number:(nsinteger)number score:(cgfloat)score;
//輸出資訊
- (void)sayhi;
@end
三://
// student.m
#import "student.h"
@implementation student
- (id)initwithname:(nsstring *)name number:(nsinteger)number score:(cgfloat)score
return self; }
+ (id)studentwithname:(nsstring *)name number:(nsinteger)number score:(cgfloat)score
- (nsstring *)description
@end
OC第六天 Block 陣列 級
block語法 block 塊語法,本質上是匿名函式 沒有名稱的函式 標準c 沒有block,c語 的後期擴充套件版本,加 了匿名函 數。c js swift等語 有類似語法,叫做閉包。block語法和函式指標很相似。匿名函式 沒有名稱的函式 int block int a,int b int in...
OC特有語法 Block
block 與函式指標的比較 有點像函式指標,可以作為引數傳遞,作為函式返回值 函式指標 void mypoint test 指向函式的指標。儲存函式名代表的指標變數 mypoint block 彌補了指向函式的指標不能夠直接儲存乙個函式體 void myblock 1 定義block變數 int ...
OC 第六講 通訊錄作業
實現中等難度通訊錄。需求 1 定義聯絡人類addresscontact。例項變數 姓名 拼音,首字母大寫 性別 號碼 住址 分組名稱 年齡。方法 自定義初始化方法 姓名 號碼 顯示聯絡人資訊 2 在main.m中定義字典,分組管理所有聯絡人。分組名為26個大寫的英文本母。3 可以新增聯絡人物件,如果...