iOS前期OC训练OC_10Block
来源:互联网 发布:天津会员卡软件 编辑:程序博客网 时间:2024/05/17 04:37
//
// main.m
// OC10_Block
//
// Created by dllo on 15/7/28.
// Copyright (c) 2015年 Clare. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Person.h"
// C语言的函数
//NSInteger maxValue(NSInteger a, NSInteger b)
//{
// return a > b ? a : b ;
//}
void test1()
{
NSLog(@"今天好热");
}
int addNum(int a,int b){
return a + b;
}
typedef int DT;
// 新的类型写在*的后面
typedef int (*PFUN)(int,int);
typedefNSString *(^Block)(NSArray *);
// 有返回值,无参数
typedefNSInteger (^Integer)();
int main(int argc,constchar * argv[]) {
// // 栈
// int a = 10;
// NSLog(@"%p", &a);
// // 堆
// int *p = malloc(40);
// NSLog(@"%p", p);
// // 全局静态区
// static int b = 10;
// NSLog(@"%p", &b);
// // 常量区
// char *str = "iPhone";
// NSLog(@"%p", str);
// // 代码区
// NSLog(@"%p", maxValue);
//
// // 函数指针的类型
// NSInteger (*pointer)(NSInteger, NSInteger) = maxValue;
// NSLog(@"%p", pointer);
// NSLog(@"%ld", maxValue(10, 5));
// // 函数指针的调用
// NSLog(@"%ld", pointer(10, 5));
//// Block的四种形式
/// 1.无参数,无返回值
// void (^block)() = ^(){
// NSLog(@"今天有点云");
// };
//
// // block的使用
// block();
// block自己不会执行,必须调用才会执行block大括号里的代码段
/// 2.有参数,无返回值
// void (^block)(int, int) = ^(int a, int b){
// int max = a > b ? a : b;
// NSLog(@"%d", max);
// };
//
// // 调用
// block(10, 20);
// void (^)(int, int) 是block的类型,它的名是block,我们也通过名进行调用
// void (^block)(NSString *) = ^(NSString *str){
// NSLog(@"%@", str);
// };
// block(@"nihao");
//参数是一个数组,对数组进行遍历
// void (^block)(NSArray *) = ^(NSArray *arr){
// // NSLog(@"%@", arr);
// for (NSString *str in arr) {
// NSLog(@"%@", str);
// }
// };
// block(@[@"2", @"3", @"5", @"4"]);
/// 3.有返回值无参数
// // 有返回值在函数的最后要加上return
// int (^block)() = ^(){
// return 100;
// };
// // block调用时没有参数也要加上括号
// NSLog(@"%d", block());
/// 4.有参数有返回值
// NSString *(^block)(NSArray *, NSInteger) = ^(NSArray *arr, NSInteger index){
// return arr[index];
// };
// NSLog(@"%@", block(@[@"1", @"2"], 1));
//写⼀个返回值为整型参数为NSString(仅⼀个参数)的block,实现将字符串转换为整型的功能。
//返回整数,参数字符串
// NSInteger (^block)(NSString *) = ^(NSString *str){
// return str.integerValue;
// };
//
// NSLog(@"%ld", block(@"23436tsd245"));
//参数日期的字符串,返回NSDate类型的日期对象
// NSDate *(^block)(NSString *) = ^(NSString *dateStr){
// NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
// [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
// return [formatter dateFromString:dateStr];
//
// };
// NSLog(@"%@", block(@"2015.7.28 10.54.23"));
// block的函数段中更多使用参数,而返回值更多是调用一方使用
// PFUN p = addNum;
// NSLog(@"%d", p(10, 20));
// 通过新的block写一个block
// Block block = ^(NSArray *arr){
// return arr[0];
// };
// block和局部变量
// __block相当于给a一个在block中修改的权限,否则他只能取值,不能赋值
// __block int a = 10;
// void (^block)() = ^{
// // void (^block)(void) = ^(void){
// int b = 10 * a ;
// // a = 10 * a;
// NSLog(@"%d", a);
// };
// block();
// 通过block对数组进行遍历
// NSArray *arr = [NSArray arrayWithObjects:@"1", @"2", @"3", @"4", @"5", @"6", nil];
// // 系统的吧block
// [arr enumerateObjectsUsingBlock:^(NSString *obj, NSUInteger idx, BOOL *stop) {
// NSLog(@"%@", obj);
// }];
//
// 系统的block的用法就是回车
// Person *per = [Person baseWithName:@"媚神" Sex:@"女"];
// NSLog(@"%@", per.name);
//// 数组排序
///数组对字符串的排序
// 不可变数组
// NSArray *arr = @[@"haoshen", @"meishen", @"wenshen", @"xuanshen", @"shengshen"];
//
// // SEL是方法选择器,它是方法选择器的类型
// NSArray *newArr = [arr sortedArrayUsingSelector:@selector(compare:)];
// NSLog(@"%@", newArr);
// NSLog(@"%@", arr);
// 可变数组
// NSMutableArray *arr = [NSMutableArray arrayWithObjects:@"haoshen", @"meishen", @"wenshen", @"xuanshen", @"shengshen", nil];
//
// [arr sortUsingSelector:@selector(compare:)];
// NSLog(@"%@", arr);
// 对对象的排序
// 新建4个人的对象
// Person *per1 = [Person baseWithName:@"meishen" Sex:@"nv"];
// Person *per2 = [Person baseWithName:@"haoshen" Sex:@"nan"];
// Person *per3 = [Person baseWithName:@"shengshen" Sex:@"nan"];
// Person *per4 = [Person baseWithName:@"jiashen" Sex:@"nan"];
// NSArray *arr = @[per1, per2, per3, per4];
//
// // 以会员的昵称作为排序的依据
// NSArray *newArr = [arr sortedArrayUsingComparator:^NSComparisonResult(Person *obj1, Person *obj2) {
// return -[obj1.name compare:obj2.name]; // return前加上-号,变成逆向排序
// }];
// for (Person *per in newArr) {
// NSLog(@"%@", per.name);
// }
// NSMutableArray *mArr = [NSMutableArray arrayWithObjects:per1, per2, per3, per4, nil];
// [mArr sortUsingComparator:^NSComparisonResult(id obj1, id obj2
// /*mArr sortUsingComparator:^NSComparisonResult(Person *obj1, Person *obj2*/
// ) {
// Person *per11 = (Person *)obj1;
// Person *per22 = (Person *)obj2;
// return [per11.name compare:per22.name];
//
// }];
//
// for (Person *per in mArr) {
// NSLog(@"%@", per.name);
// }
return0;
}
//
// BaseModel.h
// OC10_Block
//
// Created by dllo on 15/7/28.
// Copyright (c) 2015年 Clare. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface BaseModel :NSObject
@property(nonatomic,copy)NSString *name;
@property(nonatomic,copy)NSString *sex;
- (id)initWithName:(NSString *)name
Sex:(NSString *)sex;
+ (id)baseWithName:(NSString *)name
Sex:(NSString *)sex;
@end
//
// BaseModel.m
// OC10_Block
//
// Created by dllo on 15/7/28.
// Copyright (c) 2015年 Clare. All rights reserved.
//
#import "BaseModel.h"
@implementation BaseModel
- (id)initWithName:(NSString *)name
Sex:(NSString *)sex
{
self = [superinit];
if (self) {
self.name = name;
self.sex = sex;
}
return self;
}
+ (id)baseWithName:(NSString *)name
Sex:(NSString *)sex
{
//多态的方式完成对象的创建
id obj = [[[selfclass]alloc]initWithName:nameSex:sex];
return obj;
}
@end
//
// Person.h
// OC10_Block
//
// Created by dllo on 15/7/28.
// Copyright (c) 2015年 Clare. All rights reserved.
//
#import "BaseModel.h"
@interface Person :BaseModel
@end
//
// Person.m
// OC10_Block
//
// Created by dllo on 15/7/28.
// Copyright (c) 2015年 Clare. All rights reserved.
//
#import "Person.h"
@implementation Person
@end
- iOS前期OC训练OC_10Block
- iOS前期OC训练OC_04NSString
- iOS前期OC训练OC_07NSDate
- iOS前期OC训练OC_TimeCode
- iOS前期OC训练OC_02可见度,方法
- iOS前期OC训练OC_03:属性
- iOS前期OC训练OC_05省市区数组
- iOS前期OC训练OC_06字典
- iOS前期OC训练OC_06数组
- iOS前期OC训练OC_通讯录
- iOS前期OC训练OC_01类和对象
- iOS前期OC训练OC_省市区字典数组
- iOS前期OC训练OC_07类的扩展
- iOS前期OC训练OC_08,09内存管理
- iOS前期OC训练OC_02继承,便利构造器,初始化方法
- OC前期准备
- OC语言前期准备
- OC语言前期准备
- HDU 5299 Circles Game
- spring 和 mybatis 的整合
- LeetCode_112Path Sum
- OC基础-07.单例实现原理(模拟UI Application单例)
- HDU 5324 Boring Class【cdq分治】
- iOS前期OC训练OC_10Block
- java内在模型与多线程关系
- Cocos2d-JS项目之三:使用合图
- 归并排序和快速排序的比较
- hdu 5323 Solve this interesting problem(dfs)
- hdu1873~看病要排队~
- Android Studio导入开源类库
- Contains Duplicate
- 杭电 2025 查找最大元素