#import <Foundation/Foundation.h>
#import "Person.h"
#import "Theme.h"
#import "Moblie.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
NSLog(@"Hello, World!");
//一般对象实例化的过程
Person *newPerson=[[Person alloc]init];
//利用了我们自己封装的方法实例化的对象,这时的对象叫单例对象
Person *person=[Person sharePerson];
//利用了我们自己封装的方法实例化的对象,这时的对象叫单例对象
Person *personI=[Person sharePerson];
//利用了我们自己封装的方法实例化的对象,这时的对象叫单例对象
Person *personII=[Person sharePersonI];
// 对一个单例对象进行属性赋值
personII.name=@"xiaoMing";
personII.age=10;
Person *personIII=[Person sharePersonI];
// 虽然换一个指针仍是之前的对象,修改属性值后两个指针找到的属性都会改变
personIII.name=@"xiaoXiaoMing";
NSLog(@"personII name:%@ personII age :%i personIII name:%@ personIII age :%i",personII.name,personII.age,personIII.name,personIII.age);
// NSLog(@"newPerson:%p person:%p personI:%p",newPerson,person,personI);
NSLog(@"newPerson:%p personII:%p personIII:%p",newPerson,personII,personIII);
Theme *theme=[[Theme alloc]init];
NSMutableArray *muArray=[[NSMutableArray alloc]initWithCapacity:10];
[muArray addObjectsFromArray:@[@"浅蓝",@"灰色"]];
NSLog(@"%@",muArray[0]);
theme.color=muArray;
Moblie *phone=[[Moblie alloc]init];
// 通过单例传值
phone.moblieColor=theme.color[0];
NSLog(@"手机的主题颜色:%@",phone.moblieColor);
NSArray *array=@[@"1",@"11",@"14",@"2"];
NSComparisonResult (^sort)( id ,id ) = ^( id object1 , id object2 ){
return [object1 compare:object2];
};
// NSArray *sortArray=[array sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
// return [obj1 compare:obj2];
// }];
NSArray *arratS=[array sortedArrayUsingComparator:sort];
NSLog(@"%@",arratS);
[person setBlock:^(NSString *name) {
person.name=name;
}];
person.blockTest(@"jack");
NSLog(@"person name:%@",person.name);
//-------复习代码块
__block int q=9;
//无返回无参数的代码块;
void (^my_block)(void);//声明
my_block=^(void){
q=q-6;
};//定义
my_block();//调用
NSLog(@"%i",q);
//有返回值有参数的
int (^block)( double , double ) = ^(double num1, double num2){
return (int)num1 + (int)num2;
};
NSLog(@"%i", block(2,4));
//构造块:
typedef int (^add_block) (int,int);
add_block addMethod=^(int num , int num1){
return num1+num;
};
int sum=addMethod(2,3);
NSLog(@"%i",sum);
//静态块,在递归调用时使用
static int (^blockI) ( void )=^{
return 1;
};
//-------设计模式--(单例模式)
// 特点:(1)只有一个对象(2)相当于一个全局变量 (3)多个对象使用
// 实现:
// (1)创建一个类(2)在实现文件证明一个全局变量(3)封装一个实例化单例对象的方法,这是以一个类方法,判断全局变量是否为空最终保证对象性的唯一性(4)接口文件中声明封装的方法(5)引入特殊类的头文件(6)通过封装的实例化单例对象的方法实例化出对象。
// 单例对象:(1)可以有多个指针指向(2)单例对象可以传值
// 注意:单例对象不会轻易被释放,谨慎使用
//代码块练习:字符串编码:利用代码块将字符串@“apple”变化为@“abpqpqlmef”
// 单例练习:建立Son类,有属性motherName和fatherName,单例传值给父亲对象和母亲你、对象
}
return 0;
}
@implementation Theme
static id themeObject;
+(id)shareTheme{
if (themeObject==nil) {
themeObject=[[self alloc]init];
}
return themeObject;
}