08 2017 档案

摘要:// // ViewController.m // 03-综合练习 // // Created by xiaomage on 15/12/28. // Copyright © 2015年 小码哥. All rights reserved. // #import "ViewController.h" @interface ViewController () // 购物车 @prope... 阅读全文
posted @ 2017-08-29 18:15 无天666 阅读(256) 评论(0) 推荐(0)
摘要:// // ViewController.m // 03-综合练习 // #import "ViewController.h" @interface ViewController () // 购物车 @property (weak, nonatomic) IBOutlet UIView *shopCarView; // 添加按钮 @property (weak, nonatomic) ... 阅读全文
posted @ 2017-08-29 18:14 无天666 阅读(302) 评论(0) 推荐(0)
摘要:// // main.m // 03-plist文件的回顾 // // Created by xiaomage on 15/12/29. // Copyright © 2015年 小码哥. All rights reserved. // #import int main(int argc, const char * argv[]) { @autoreleasepool { ... 阅读全文
posted @ 2017-08-29 18:08 无天666 阅读(230) 评论(0) 推荐(0)
摘要:Assets.xcassets图片是拖到右边里面去的。 阅读全文
posted @ 2017-08-29 17:28 无天666 阅读(262) 评论(0) 推荐(0)
摘要:// // ViewController.m // 02-UIButton(在代码中使用) // #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; ... 阅读全文
posted @ 2017-08-29 17:14 无天666 阅读(1912) 评论(0) 推荐(0)
摘要:// // ViewController.m // 10-iOS中播放音效 // // Created by xiaomage on 15/12/26. // Copyright © 2015年 小码哥. All rights reserved. // #import "ViewController.h" #import @interface ViewController () /... 阅读全文
posted @ 2017-08-29 15:47 无天666 阅读(343) 评论(0) 推荐(0)
摘要:/** 图片的两种加载方式: 1> imageNamed: a. 就算指向它的指针被销毁,该资源也不会被从内存中干掉, b. 放到Assets.xcassets的图片,默认就有缓存, c. 图片经常被使用,用这种方式加载, 2> imageWithContentsOfFile: a. 指向它的指针被 阅读全文
posted @ 2017-08-29 15:24 无天666 阅读(442) 评论(0) 推荐(0)
摘要:// // ViewController.m // 05-UIImageView的帧动画 // #import "ViewController.h" @interface ViewController () /** * 属性 */ @property (weak, nonatomic) IBOutlet UIImageView *imageView; @end @impleme... 阅读全文
posted @ 2017-08-29 15:02 无天666 阅读(430) 评论(0) 推荐(0)
摘要:// // ViewController.m // 06-资源存放问题 #import "ViewController.h" /** 加载图片的方式: 1. imageNamed: 2. imageWithContentsOfFile: 1. 加载Assets.xcassets这里面的图片: 1> 打包后变成Assets.car 2> 拿不到... 阅读全文
posted @ 2017-08-29 14:59 无天666 阅读(211) 评论(0) 推荐(0)
摘要:// // ViewController.m // 03-UIImageView的使用 // #import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutlet UIImageView *image2; @end @implementation ViewControl... 阅读全文
posted @ 2017-08-29 14:22 无天666 阅读(198) 评论(0) 推荐(0)
摘要:// // ViewController.m // 02-UILabel的使用 // // UILabel显示一段文字。 #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewD... 阅读全文
posted @ 2017-08-29 11:43 无天666 阅读(210) 评论(0) 推荐(0)
摘要:// // ViewController.m // 01-加法计算器 // // 首先找main.m文件,然后找AppDelegate,然后找Main Inteferce主交互故事板,然后加载箭头指向的控制器,然后加载控制器内部的View。 // 连线:按住control拖过去然后配置。 // 类扩展:私有的属性和方法。 #import "ViewController.h... 阅读全文
posted @ 2017-08-29 11:18 无天666 阅读(386) 评论(0) 推荐(0)
摘要:// // ViewController.m // 08-UIView的常见属性(尺寸和位置) // // frame:相对于父控件左上角定位 // bounds:改变长宽,左上角是相对于自己 // center: #import "ViewController.h" @interface ViewController () /** label */ @property (nona... 阅读全文
posted @ 2017-08-29 10:26 无天666 阅读(929) 评论(0) 推荐(0)
摘要:// // ViewController.m // 07-UIView的常见方法 // #import "ViewController.h" @interface ViewController () // 红色的view,通过连线,连线就是把oc代码和UI绑定了。 @property (weak, nonatomic) IBOutlet UIView *redView; /** 红色的... 阅读全文
posted @ 2017-08-29 10:07 无天666 阅读(305) 评论(0) 推荐(0)
摘要:// // ViewController.m // 06-UIView的常见属性 // #import "ViewController.h" @interface ViewController () // 绿色的view @property (weak, nonatomic) IBOutlet UI 阅读全文
posted @ 2017-08-28 21:12 无天666 阅读(164) 评论(0) 推荐(0)
摘要:// AppDelegate.h // 01-HelloWorld的实现 // /* 新建工程的时候,Use Core Data:比如本地缓存, Include Unit test:增加单元测试 Include UI test:UI的测试。 AppDelegate.h:代理 AppDelegate.m ViewController.h:控制器 ViewController.... 阅读全文
posted @ 2017-08-28 18:26 无天666 阅读(228) 评论(0) 推荐(0)
摘要://Singleton.h // 以后就可以使用interfaceSingleton来替代后面的方法声明。 \表示下一行也是上一行的内容。 #define interfaceSingleton(name) +(instancetype)share##name #if __has_feature(objc_arc) //ARC编译这段 #define implementatio... 阅读全文
posted @ 2017-08-28 14:43 无天666 阅读(286) 评论(0) 推荐(0)
摘要:// Tools.h #import @interface Tools : NSObject // 一般情况下创建一个单例对象都有一个与之对应的类方法,一般情况下用于创建单例对象的方法名称都以share开头, 或者以default开头 + (instancetype)shareInstance; @end // // Tools.m #import "Tools.h" @i... 阅读全文
posted @ 2017-08-28 14:20 无天666 阅读(257) 评论(0) 推荐(0)
摘要:// // main.m // 自定义类实现copy #import #import "Person.h" #import "Student.h" int main(int argc, const char * argv[]) { /* 1.以后想让自定义的对象能够被copy只需要遵守NSCopying协议 2.实现协议中的- (id)copyWithZon... 阅读全文
posted @ 2017-08-28 13:38 无天666 阅读(431) 评论(0) 推荐(0)
摘要:3的图片内存示意图 pBlock指向的是堆中的代码块地址。 阅读全文
posted @ 2017-08-28 11:22 无天666 阅读(282) 评论(0) 推荐(0)
摘要:// // main.m // Copy内存管理(MRC才有内存管理) // #import int main(int argc, const char * argv[]) { @autoreleasepool { NSString *str1 = @"lnj"; char *cstr = "this is a c strin... 阅读全文
posted @ 2017-08-28 09:49 无天666 阅读(237) 评论(0) 推荐(0)
摘要:// // main.m // Copy基本使用,拷贝的本质:修改其中一个不能影响另外一个。 // 每个oc对象都有copy和mutableCopy方法,前提是必须遵守NSCopying协议实现copyWithZone方法和NSMutableCopying协议实现mutableCopyWithZone方法。 // copy出来的对象是不可变的(NSString,NSArray,NSD... 阅读全文
posted @ 2017-08-27 22:41 无天666 阅读(274) 评论(0) 推荐(0)
摘要:// // main.m // 集合(数组)对象的内存管理(MRC中) // #import #import "Person.h" int main(int argc, const char * argv[]) { @autoreleasepool { // 1. 如果将一个对象添加到一个数组中, 那么数组会对对象进行一个retain ... 阅读全文
posted @ 2017-08-27 22:31 无天666 阅读(261) 评论(0) 推荐(0)
摘要:// main.m // NSFileManager #import int main(int argc, const char * argv[]) { NSFileManager *manager = [NSFileManager defaultManager]; // 1.判断一个文件或者文件夹是否存在 BOOL flag = [manager f... 阅读全文
posted @ 2017-08-27 22:02 无天666 阅读(272) 评论(0) 推荐(0)
摘要:// // main.m // OC中的常用结构体 // #import int main(int argc, const char * argv[]) { // 1.保存坐标的 // NSPoint === CGPoint;别名 CGPoint point = NSMakePoint(10, 20); // 2.保存尺寸的 // ... 阅读全文
posted @ 2017-08-27 21:51 无天666 阅读(280) 评论(0) 推荐(0)
摘要:// // main.m // NSMutableDictionary // NSDictionary不可变,初始化后就不可以修改,NSMutableDictionary可变,初始化后可以改变。 // #import int main(int argc, const char * argv[]) { // 1.创建一个空的字典 NSMutableDictionary... 阅读全文
posted @ 2017-08-27 18:13 无天666 阅读(234) 评论(0) 推荐(0)
摘要:// // main.m // NSDictionary // // #import int main(int argc, const char * argv[]) { // 1.如何创建 NSDictionary *dict1 = [NSDictionary dictionaryWithObject:@"lnj" forKey:@"name"]; NSStr... 阅读全文
posted @ 2017-08-27 18:02 无天666 阅读(249) 评论(0) 推荐(0)
摘要:// // main.m // NSMutableArray ,可变数组 #import int main(int argc, const char * argv[]) { // 创建一个空的数组 NSMutableArray *arrM = [NSMutableArray array]; NSLog(@"%@", arrM); // 如何添... 阅读全文
posted @ 2017-08-27 16:51 无天666 阅读(398) 评论(0) 推荐(0)
摘要:// // main.m // NSArray和NSString之间转换 #import int main(int argc, const char * argv[]) { NSArray *arr = @[@"lnj", @"lmj", @"jjj"]; // 需求: 用-将所有的姓名连接起来生成一个字符串 // 1.定义一个可变字符串保存拼接之后... 阅读全文
posted @ 2017-08-27 16:24 无天666 阅读(192) 评论(0) 推荐(0)
摘要:// Person.h #import @interface Person : NSObject @property (nonatomic, assign) int age; @end // Person.m #import "Person.h" @implementation Person - (NSString *)description { return [N... 阅读全文
posted @ 2017-08-27 16:09 无天666 阅读(288) 评论(0) 推荐(0)
摘要:// // Person.h #import @interface Person : NSObject - (void)say; - (void)sayWithName:(NSString *)name; @end // // Person.m #import "Person.h" @implementation Person -(void)say { NSLog... 阅读全文
posted @ 2017-08-27 15:40 无天666 阅读(255) 评论(0) 推荐(0)
摘要:// // main.m // NSArray是不可变的,一旦初始化完毕,就不能添加和删除了。类似于NSString和NSMutilString。 #import #import "Person.h" int main(int argc, const char * argv[]) { NSArray *arr1 = [[NSArray alloc] init]; //NSAr... 阅读全文
posted @ 2017-08-27 15:39 无天666 阅读(238) 评论(0) 推荐(0)
摘要:// main.m // NSMutableString基本概念,NSString是不可变字符串,NSMutableString是可变字符串。NSMutableString继承NSString,所以NSString得所有方法NSMutableString都是可以用的。 #import int main(int argc, const char * argv[]) { ... 阅读全文
posted @ 2017-08-27 15:04 无天666 阅读(607) 评论(0) 推荐(0)
摘要:// // main.m // 字符串截取 #import int main(int argc, const char * argv[]) { NSString *str = @"小码哥"; /* // NSRange : 位置/长度 // NSRange range = {6, 3}; // NSRange range; // range.... 阅读全文
posted @ 2017-08-27 14:45 无天666 阅读(467) 评论(0) 推荐(0)
摘要:// // main.m // NSString基本概念 // Foundation框架,苹果有80多个框架,Foundation有125个头文件。 #import int main(int argc, const char * argv[]) { //如何创建字符串对象 /* 通过不同的方式创建字符串,字符串对象储存的位置也不一样 >如果是通过... 阅读全文
posted @ 2017-08-27 14:15 无天666 阅读(1502) 评论(0) 推荐(0)
摘要:// // BabyProtocol.h #import @class Baby; @protocol BabyProtocol // 喂婴儿吃东西 - (void)feedFood:(Baby *)baby; // 哄婴儿睡觉 - (void)hongBaby:(Baby *)baby; @end // // Baby.h // day17 #import #impor... 阅读全文
posted @ 2017-08-27 01:28 无天666 阅读(296) 评论(0) 推荐(0)
摘要:// WifeCondition.h #import @protocol WifeCondition // 会做饭 - (void)cooking; // 会洗衣服 - (void)washing; // 有一份好工作 - (void)job; @end // Person.h #import #import "Wife.h" @interface Person : NSO... 阅读全文
posted @ 2017-08-27 01:07 无天666 阅读(344) 评论(0) 推荐(0)
摘要:// // SportProtocol.h // day17 // #import @protocol SportProtocol //NSObject是默认的协议类,每个协议都要继承NSObject基协议。不写也可以。 // 1.协议只能声明方法, 不能声明属性(跟分类一样) //{ // int _age; //} // 方法声明列表 // 2.注意: 如果没有使用... 阅读全文
posted @ 2017-08-27 00:47 无天666 阅读(271) 评论(0) 推荐(0)
摘要:// // SportProtocol.h // day17 #import @protocol SportProtocol // 方法声明列表 - (void)playFootball; - (void)playBasketball; - (void)playBaseball; @end // // Person.h // day17 #import #import "S... 阅读全文
posted @ 2017-08-27 00:42 无天666 阅读(368) 评论(0) 推荐(0)
摘要:// // main.m // Block的应用场景 // typedef void (^workBlock)(); #import /* void goToWorkPrefix() { NSLog(@"起床"); NSLog(@"穿衣服"); NSLog(@"洗漱"); NSLog(@"喝早茶"); NSLog(@"驾车去上班"); } void goToWork... 阅读全文
posted @ 2017-08-26 21:05 无天666 阅读(266) 评论(0) 推荐(0)
摘要:// // main.m // Block基本使用:一种数据类型,应用在动画,多线程,集合遍历,网络请求回调。 // 用来保存一段代码,在恰当的时候拿出来调用。功能类似于函数。函数不能嵌套定义,block可以, // 函数指针和block是一样的,相当于代码指针。 #import void printRose(int num) { for (int i = 0; i ... 阅读全文
posted @ 2017-08-26 21:04 无天666 阅读(239) 评论(0) 推荐(0)
摘要:// main.m // Category练习 #import #import "NSString+NJ.h" //看不到NSString的.h文件。 /* int countWithStr(NSString *str) { int count = 0; for (int i = 0; i = '0' && c = '0' && c @interface NS... 阅读全文
posted @ 2017-08-26 19:51 无天666 阅读(243) 评论(0) 推荐(0)
摘要:// // main.m // 匿名分类(延展) // 可以为某个类扩展私有的成员变量和方法,写在.m文件中, // 分类不可以扩展属性,分类有名字,匿名分类没有名字。 #import #import "Person.h" int main(int argc, const char * argv[]) { Person *p = [Person new]; ... 阅读全文
posted @ 2017-08-26 19:28 无天666 阅读(701) 评论(0) 推荐(0)
摘要:// // main.m // Category注意事项 #import #import "Person+NJ.h" int main(int argc, const char * argv[]) { Person *p = [Person new]; // p.height = 1.75; [p say]; return 0; } // ... 阅读全文
posted @ 2017-08-26 19:16 无天666 阅读(252) 评论(0) 推荐(0)
摘要:// // main.m // Category基本使用:1.不修改类而扩充类。2.对于一个庞大的类,分模块开发。 #import #import "Person.h" #import "Person+NJ.h" /* 方法: 方法的声明: 方法的实现: 所以: 通过分类给某一个类扩充方法, 也分为声明和实现两个部分 // 分类的声明 @interface Clas... 阅读全文
posted @ 2017-08-26 18:09 无天666 阅读(240) 评论(0) 推荐(0)
摘要:ARC中的string,相当于MRC中的retain ARC中的weak,相当于MRC中的assign ARC中的assign,用于基本数据类型,跟MRC中的assign一样。 阅读全文
posted @ 2017-08-26 15:14 无天666 阅读(216) 评论(0) 推荐(0)
摘要:// Person.h #import @interface Person : NSObject @end // Person.m #import "Person.h" @implementation Person - (void)dealloc { NSLog(@"%s", __func__); // [super dealloc]; /... 阅读全文
posted @ 2017-08-26 14:25 无天666 阅读(230) 评论(0) 推荐(0)
摘要:// // Person.h #import @interface Person : NSObject @property (nonatomic, assign) int age; + (instancetype)person; - (instancetype)initWithAge:(int)age; + (instancetype)personWithAge:(int)age... 阅读全文
posted @ 2017-08-25 17:27 无天666 阅读(221) 评论(0) 推荐(0)
摘要:// // main.m // autorelease注意事项 #import #import "Person.h" int main(int argc, const char * argv[]) { Person *p1 = [[Person alloc] init]; @autoreleasepool { Person *p2 = [[[... 阅读全文
posted @ 2017-08-25 17:07 无天666 阅读(226) 评论(0) 推荐(0)
摘要:// // main.m /* autorelease也是用于内存管理的,给对象发送autorelease消息就会把对象放入autoreleasepool这个池子中,当池子销毁的时候会对池子里面的所有对象发送一条release消息,只是计数器减一,不一定会销毁。 1.autorelease方法会返回对象本身,好比init方法, Person *p = [Person new]; ... 阅读全文
posted @ 2017-08-25 16:37 无天666 阅读(261) 评论(0) 推荐(0)
摘要:// main.m // 循环retain #import #import "Person.h" #import "Dog.h" int main(int argc, const char * argv[]) { Person *p = [Person new]; Dog *d = [Dog new]; // 如果A对用要拥有B对象, 而B对应又要拥... 阅读全文
posted @ 2017-08-25 15:49 无天666 阅读(203) 评论(0) 推荐(0)
摘要:// // main.m #import #import "Person.h" int main(int argc, const char * argv[]) { Person *p = [Person new]; Dog *d = [Dog new]; p.dog = d; [p release]; [d release];... 阅读全文
posted @ 2017-08-25 15:29 无天666 阅读(159) 评论(0) 推荐(0)
摘要:// Person.h #import @class Car; //#import "Car.h" // 由于import是一个预编译指令, 他会将""中的文件拷贝到import所在的位置。 // 并且import有一个特点, 只要""中的文件发生了变化, 那么import就会重新拷贝一次(更新操作)。 // @class仅仅是告诉编译器, @class后面的名称是一个类, 不会做任何拷... 阅读全文
posted @ 2017-08-25 15:15 无天666 阅读(256) 评论(0) 推荐(0)
摘要:// // main.m // 多个对象内存管理练习 // // ARC是Xcode帮我们生成内存释放的代码,MRC是需要我买自己写retain和release。想研究内存管理只能在MRC,管理对象就是在管理引用计数器,计数器为0对象就释放。 // 给空指针发消息不会报错,给野指针发消息就会报错。 // 对象与对象之间有关系时候就用retain。 #import #import "... 阅读全文
posted @ 2017-08-25 14:55 无天666 阅读(258) 评论(0) 推荐(0)
摘要:// // Person.h #import #import "Room.h" #import "Car.h" #import "Dog.h" @interface Person : NSObject { Room *_room; Car *_car; Dog *_dog; } /* - (void)setRoom:(Room *)room; - (void)se... 阅读全文
posted @ 2017-08-25 14:18 无天666 阅读(214) 评论(0) 推荐(0)
摘要:// // main.m // Set方法的内存管理 #import #import "Person.h" #import "Room.h" int main(int argc, const char * argv[]) { @autoreleasepool { // 1.创建两个对象 Person *p = [[Person allo... 阅读全文
posted @ 2017-08-25 11:15 无天666 阅读(205) 评论(0) 推荐(0)
摘要:// Room.h #import @interface Room : NSObject @property int no;// 房间号 @end // Room.m #import "Room.h" @implementation Room - (void)dealloc { NSLog(@"%s no = %i", __func__... 阅读全文
posted @ 2017-08-23 17:45 无天666 阅读(226) 评论(0) 推荐(0)
摘要:// // main.m // 野指针和空指针 #import #import "Person.h" int main(int argc, const char * argv[]) { @autoreleasepool { Person *p = [[Person alloc] init]; // 1 // 只要一个对象被释放... 阅读全文
posted @ 2017-08-23 17:20 无天666 阅读(284) 评论(0) 推荐(0)
摘要:/* main.m 堆里面的内存释放是根据引用计数器,所以就是操作引用计数器。 创建一个对象,对象里面就有一个引用计数器,有多少指针指向它。 引用计数器为0就释放。任何一个对象初始化时就是1,所以 { Person *p = [[Person alloc] init] } 出了这行代码p销毁了,但是Person对象里面的计数器初... 阅读全文
posted @ 2017-08-23 16:57 无天666 阅读(289) 评论(0) 推荐(0)
摘要:// // main.m // 代理的时候用。 /* SEL类型: 代表方法的签名,在类中的方法列表中存储着该签名与该方法对应的关系,类的方法列表存储在类对象中, 每个方法都有一个与之对应的sel类型的对象,根据sel类型的对象就可以找到方法的地址而进行调用。 [p test]会先把test包装成sel类型的数据,根据sel类型的数据去类对象中的方法列表中去一个一个... 阅读全文
posted @ 2017-08-23 16:08 无天666 阅读(215) 评论(0) 推荐(0)
摘要:// // main.m // 类的启动过程 #import #import "Person.h" #import "GoodStudent.h" /* 只要程序启动就会将所有类的代码加载到内存中, 放到代码区 load方法会在当前类被加载到内存的时候调用, 有且仅会调用一次 如果存在继承关系, 会先调用父类的load方法, 再调用子类的load方法*/ int main(int... 阅读全文
posted @ 2017-08-23 15:16 无天666 阅读(252) 评论(0) 推荐(0)
摘要:虚线是isa的指向,实线是继承关系。 阅读全文
posted @ 2017-08-23 14:44 无天666 阅读(194) 评论(0) 推荐(0)
摘要:// Person.h #import @interface Person : NSObject @property int age; /* 什么是类工厂方法: 用于快速创建对象的类方法, 我们称之为类工厂方法 类工厂方法中主要用于 给对象分配存储空间和初始化这块存储空间 规范: 1.一定是类方法 + 2.方法名称以类的名称开头, 首字母小写 3.一定有返回值, 返回... 阅读全文
posted @ 2017-08-23 14:01 无天666 阅读(372) 评论(0) 推荐(0)
摘要:// // Person.h #import @interface Person : NSObject @property int age; @property double width; /* 什么是类工厂方法: 用于快速创建对象的类方法, 我们称之为类工厂方法 类工厂方法中主要用于 给对象分配存储空间和初始化这块存储空间 规范: 1.一定是类方法 + 2.方法名称以... 阅读全文
posted @ 2017-08-23 13:59 无天666 阅读(248) 评论(0) 推荐(0)
摘要:// // Person.h #import @interface Person : NSObject @property int age; @property NSString *name; /* 自定义构造方法: 其实就是自定义一个init方法 1.一定是对象方法 2.一定返回id/instancetype 3.方法名称一定以init开头 */ - (instancety... 阅读全文
posted @ 2017-08-23 11:36 无天666 阅读(246) 评论(0) 推荐(0)
摘要:// // Person.h #import @interface Person : NSObject @property int age; @property NSString *name; /* 自定义构造方法: 其实就是自定义一个init方法 1.一定是对象方法 2.一定返回id/instancetype 3.方法名称一定以init开头 */ - (instancet... 阅读全文
posted @ 2017-08-23 11:34 无天666 阅读(223) 评论(0) 推荐(0)
摘要:// Person.h #import @interface Person : NSObject @property int age; - (void)test:(id)obj1; //编译不报错 - (void)demo:(instancetype)obj2; //不能定义变量,不能定义形参数 @end // // Person.m #import "Person.h" ... 阅读全文
posted @ 2017-08-23 11:11 无天666 阅读(236) 评论(0) 推荐(0)
摘要:// Person.h #import @interface Person : NSObject @property int age; //属性是_age @end // // Person.m #import "Person.h" @implementation Person - (instancetype)init { if (self = [super in... 阅读全文
posted @ 2017-08-23 10:33 无天666 阅读(207) 评论(0) 推荐(0)
摘要:// // Person.h #import @interface Person : NSObject @property int age; @end // // Person.m #import "Person.h" @implementation Person /* // 重写init方法, 在init方法中初始化成员变量 // 注意: 重写init方法必须按照苹果规定... 阅读全文
posted @ 2017-08-23 10:31 无天666 阅读(177) 评论(0) 推荐(0)
摘要:// // main.m // new方法实现原理 #import #import "Person.h" int main(int argc, const char * argv[]) { /* new做了三件事情 1.开辟存储空间 + alloc 方法 2.初始化所有的属性(成员变量) - init 方法 3.返回对象的地址 ... 阅读全文
posted @ 2017-08-23 10:15 无天666 阅读(184) 评论(0) 推荐(0)
摘要:// // Person.h #import @interface Person : NSObject - (void)sleep; @property int age; @end // // Person.m #import "Person.h" @implementation Person - (void)sleep { NSLog(@"人睡觉"); ... 阅读全文
posted @ 2017-08-23 10:00 无天666 阅读(260) 评论(0) 推荐(0)
摘要:// // Person.h #import @interface Person : NSObject /* 如果给一个属性同时提供了getter/setter方法, 那么我们称这个属性为可读可写属性 如果只提供了getter方法, 那么我们称这个属性为只读属性 如果只提供了setter方法, 那么我们称这个属性为只写属性 如果既没有提供getter也没有提供setter方法,... 阅读全文
posted @ 2017-08-22 22:20 无天666 阅读(154) 评论(0) 推荐(0)
摘要:// // Person.h #import @interface Person : NSObject /* { @public int _age; int age; } */ /* 从Xcode4.4以后apple对@property进行了一个增强, 以后只要利用一个@property就可以同时生成setter/getter方法的声明和实现 没有告诉@p... 阅读全文
posted @ 2017-08-22 22:06 无天666 阅读(222) 评论(0) 推荐(0)
摘要:// // Person.h #import @interface Person : NSObject { @public int _age; int age; int _number; } /* @porperty是一个编译器指令 在Xocde4.4之前, 可以使用@porperty来代替getter/setter方法的声明 也就是说我们只需要写上... 阅读全文
posted @ 2017-08-22 21:50 无天666 阅读(193) 评论(0) 推荐(0)
摘要:// // Person.h #import @interface Person : NSObject { int _age; } /* setter: 作用: 用于给成员变量赋值 1.一定是对象方法 2.一定没有返回值 3.方法名称以set开头, 后面跟上需要赋值的成员变量名称, 并且去掉下划线, 然后首字母大写 4.一定有参数, 参数类型和需要赋值的成员变量一... 阅读全文
posted @ 2017-08-22 21:49 无天666 阅读(225) 评论(0) 推荐(0)
摘要:// // Person.h #import @interface Person : NSObject { @public int _age; @protected double _height; @private NSString *_name; @package double _weight... 阅读全文
posted @ 2017-08-22 21:17 无天666 阅读(184) 评论(0) 推荐(0)
摘要:// Person.h #import @interface Person : NSObject { int _age; double _height; double _weight; NSString *_name; NSString *_tel; NSString *_email; } - (void)setAge:(int)age... 阅读全文
posted @ 2017-08-22 20:59 无天666 阅读(284) 评论(0) 推荐(0)
摘要:// // Person.h #import /* @public:所有类访问 @private:本类访问 @protected:本类子类,默认情况下所有的实例变量都是protected @package:包范围,框架范围子类。 实例变量修饰符作用域: 从出现的位置开始, 一直到下一个修饰符出现,如果没有遇到下一个实例变量修饰符, 那么就会修饰后面所有的实例变量 */ @i... 阅读全文
posted @ 2017-08-22 20:41 无天666 阅读(211) 评论(0) 推荐(0)
摘要:// // Animal.h #import @interface Animal : NSObject { int _age; } - (void)eat; //.h是变量和方法的声明, .m文件是对方法的实现。 @end // // Animal.m #import "Animal.h" @implementation Animal - (void)eat { ... 阅读全文
posted @ 2017-08-22 20:20 无天666 阅读(413) 评论(0) 推荐(0)
摘要:// // Phone.h #import typedef enum { kFlahlightStatusOpen, kFlahlightStatusClose } FlahlightStatus; // 被继承的这个类我们称之为父类/ 超类 @interface Phone : NSObject + (void)carameWithFlahlightStatus:(F... 阅读全文
posted @ 2017-08-22 19:56 无天666 阅读(183) 评论(0) 推荐(0)
摘要:// // Phone.h #import // 被继承的这个类我们称之为父类/ 超类 @interface Phone : NSObject { int _cpu; } // 打电话 - (void)signalWithNumber:(NSString *)number; // 发短信 - (void)sendMessageWithNumber:(NSString *)nu... 阅读全文
posted @ 2017-08-22 19:15 无天666 阅读(229) 评论(0) 推荐(0)
摘要:// // Phone.h // day13 #import // 被继承的这个类我们称之为父类/ 超类 @interface Phone : NSObject { int _cpu; } // 打电话 - (void)signalWithNumber:(NSString *)number; // 发短信 - (void)sendMessageWithNumber:(NSStr... 阅读全文
posted @ 2017-08-22 18:43 无天666 阅读(207) 评论(0) 推荐(0)
摘要:self2: self3: 阅读全文
posted @ 2017-08-22 17:58 无天666 阅读(217) 评论(0) 推荐(0)
摘要:// // Person.h // day13 #import @interface Person : NSObject { // @public int _age; NSString *_name; double _height; } - (void)setAge:(int)age; - (void)setName:(NSString *)name; ... 阅读全文
posted @ 2017-08-22 17:17 无天666 阅读(244) 评论(0) 推荐(0)
摘要:// // Kline.h // day13 #import @interface Kline : NSObject { int _max; int _min; int _average; } - (void)setMax:(int)max; - (void)setMin:(int)min; - (void)setAverage:(int)average; - ... 阅读全文
posted @ 2017-08-22 16:53 无天666 阅读(160) 评论(0) 推荐(0)
摘要:// // main.m // 修改项目模板 /* 工程名称: 文件名称: 创建者 : 创建时间: 版权 : 修改人 : 修改时间: */ #import int main(int argc, const char * argv[]) { /* 修改项目模板以及main函数中的内容 /Applications/Xcode.app... 阅读全文
posted @ 2017-08-22 16:30 无天666 阅读(297) 评论(0) 推荐(0)
摘要:// // main.m // 匿名对象 #import #import "Person.h" #import "Iphone.h" int main(int argc, const char * argv[]) { // 匿名就是没有名字, 匿名对象就是没有名字的对象 // 1.有名字的对象 // 只要用一个指针保存了某个对象的地址, 我们就可以称这... 阅读全文
posted @ 2017-08-22 16:00 无天666 阅读(250) 评论(0) 推荐(0)
摘要:// // main.m // #pragma mark基本使用 // // Created by xiaomage on 15/6/18. // Copyright (c) 2015年 xiaomage. All rights reserved. // #import /* 士兵 事物名称: 士兵(Soldier) 属性:姓名(name), 身高(height), 体重(we... 阅读全文
posted @ 2017-08-22 15:29 无天666 阅读(207) 评论(0) 推荐(0)
摘要:// main.m // 对象作为方法的参数传递 #import /* 士兵 事物名称: 士兵(Soldier) 属性:姓名(name), 身高(height), 体重(weight) 行为:打枪(fire), 打电话(callPhone) 枪 事物名称:枪(Gun) 属性:弹夹(clip) , 型号(model) 行为:上弹夹(addClip) 弹夹 事物名... 阅读全文
posted @ 2017-08-22 15:27 无天666 阅读(204) 评论(0) 推荐(0)
摘要:// // main.m // 结构体作为对象的属性 #import typedef struct { int year; int month; int day; } Date; @interface Student : NSObject { @public NSString *_name; // struct Date birthda... 阅读全文
posted @ 2017-08-22 15:13 无天666 阅读(479) 评论(0) 推荐(0)
摘要:// // main.m // 练习 #import @interface Car : NSObject { @public int wheels; } // 方法的声明必须写在类的声明中 - (void)run; - (void)test; @end @implementation Car - (void)test { NSLog(@"测试一下车子:%i", whee... 阅读全文
posted @ 2017-08-22 14:59 无天666 阅读(221) 评论(0) 推荐(0)
摘要:// // main.m // 类方法,不可以直接访问对象的属性和方法,类方法中可以直接调用类方法。 // NSString基本使用 #import //#import @interface Iphone : NSObject - (NSString *)loadMessage; @end @implementation Iphone - (NSString *)loadMes... 阅读全文
posted @ 2017-08-22 14:41 无天666 阅读(253) 评论(0) 推荐(0)
摘要:// // main.m // 局部变量和全局变量以及成员变量的区别 #import @interface Person : NSObject { // 写在类声明的大括号中的变量, 我们称之为 成员变量(属性, 实例变量) // 成员变量只能通过对象来访问 // 注意: 成员变量不能离开类, 离开类之后就不是成员变量,成员变量不能在定义的同时进行初始化。 ... 阅读全文
posted @ 2017-08-22 13:44 无天666 阅读(820) 评论(0) 推荐(0)
摘要:// // main.m // 第二个OC类 #import <Foundation/Foundation.h> @interface Person : NSObject { @public int _age; double _height; double _weight; } - (void)ea 阅读全文
posted @ 2017-08-22 11:26 无天666 阅读(592) 评论(0) 推荐(0)
摘要:// // main.m // 第一个OC类-类方法 #import // 1.编写类的声明 @interface Iphone : NSObject { @public float _model; // 型号 0 int _cpu; // cup 0 double _size; // 尺寸 0 int _color; // 颜色 0 } - (v... 阅读全文
posted @ 2017-08-22 10:13 无天666 阅读(288) 评论(0) 推荐(0)
摘要:http://blog.csdn.net/cyuyanenen/article/details/51925005 一、概述 (1)iOS开发中,应用程序打包 = ipa = 安装在手机上。(注意,并不是所有的ipa都可以随意安装) (2)如果想让用户可以安装ipa,必须在打包程序的时候说清楚 哪一个 阅读全文
posted @ 2017-08-22 00:27 无天666 阅读(6031) 评论(0) 推荐(0)
摘要:// main.m // 第一个OC类-方法2 #import // 1.编写类的声明 @interface Iphone : NSObject { @public float _model; int _cpu; double _size; int _color; } // 注意: OC中的方法, 如果没有形参不需要写(), 而是直接写一个;因为OC方法中... 阅读全文
posted @ 2017-08-21 18:17 无天666 阅读(350) 评论(0) 推荐(0)
摘要:// main.m // 第一个OC类-方法2 #import // 1.编写类的声明 @interface Iphone : NSObject { @public float _model; int _cpu; double _size; int _color; } // 注意: OC中的方法, 如果没有形参不需要写(), 而是直接写一个;因为OC方法中... 阅读全文
posted @ 2017-08-21 18:16 无天666 阅读(352) 评论(0) 推荐(0)
摘要:// // main.m // 第一个OC类-方法 #import /* C语言中函数分为声明和实现,OC中定义类, 就是在写类的声明和实现 */ // 1.编写类的声明 @interface Iphone : NSObject { @public float _model; // 型号 0 int _cpu; // cup 0 doubl... 阅读全文
posted @ 2017-08-21 17:40 无天666 阅读(200) 评论(0) 推荐(0)
摘要:// main.m // 第一个OC类,OC中的类其实本质就是一个结构体, 所以p这个指针其实就是指向了一个结构体,创建一个对象就是创建一个结构体指针, #import /* C语言中函数分为声明和实现,OC中定义类, 就是在写类的声明和实现 */ // 1.如何编写类的声明 // 以@interface开头 , 以@end结尾, 然后类名,注意: 类名的首字符必须大写 // 声... 阅读全文
posted @ 2017-08-21 17:24 无天666 阅读(281) 评论(0) 推荐(0)
摘要:// zs.h #ifndef __day11__zs__ #define __day11__zs__ #include int sum(int v1, int v2); #endif /* defined(__day11__zs__) */ // zs.c #include "zs.h" int sum(int v1, int v2) { return v1 + v... 阅读全文
posted @ 2017-08-21 16:19 无天666 阅读(432) 评论(0) 推荐(0)
摘要:// // main.c // const关键字,节省内存空间,放在字符表里面, #include int main(int argc, const char * argv[]) { /* 1.const,指针类型的左边、数据类型和*号之间,指针的指向可以改变,指向的内存空间中的值不能改变。 2.const写在指针的右边(数据类型 * const),... 阅读全文
posted @ 2017-08-21 14:58 无天666 阅读(159) 评论(0) 推荐(0)
摘要:// // main.c // typedef #include /* typedef可以给一个已知的数据类型起别名。 typedef 原有的数据类型 别名; 注意: 1. typedef不仅能给系统原有的数据类型起别名, 也可以给一个自定义的数据类型起别名 2. 利用typedef给数据类型起别名, 并不会生成一个新的数据类型, 仅仅是给原有的类型起了一个别名而已 ... 阅读全文
posted @ 2017-08-21 14:37 无天666 阅读(245) 评论(0) 推荐(0)
摘要:// // main.c // 文件包含 #include // 函数可以重复声明, 但不能重复定义 void test(); void test(); void test(); void test(); #include "zs.h"// 把zs.h文件全部拷贝多来,int sum(int v1, int v2);声明之后就可以用了。 // 重复导入会导致重复声明不会报错,但是会... 阅读全文
posted @ 2017-08-21 13:44 无天666 阅读(250) 评论(0) 推荐(0)
摘要:// // main.c // 条件编译(宏定义是简单的替换,要给参数和结果都加括号) #include #define SCORE 90 #define DEBUG 1 // 0是调试阶段 1是发布阶段 //printf和打印log是很消耗性能的。 #if DEBUG == 0 // 调试阶段 #define NJLog(format, ...) printf(format,##... 阅读全文
posted @ 2017-08-21 11:25 无天666 阅读(208) 评论(0) 推荐(0)
摘要:// // main.c // 宏定义 #include void test(); /* 预处理指令:在我们的文件翻译成0和1之前做的操作我们称之为预处理指令,一般以#号开头的(#include),包括:1.宏定义,2.条件编译,3.文件包含 */ /* 1.宏定义(会在程序翻译成0和1之前,将所有宏名替换为宏的值)的格式 1.不带参数的宏定义:#define 宏名 ... 阅读全文
posted @ 2017-08-21 10:39 无天666 阅读(516) 评论(0) 推荐(0)
摘要:main.c zs.c zs.h main.c main.c zs.h zs.c 阅读全文
posted @ 2017-08-19 22:39 无天666 阅读(2421) 评论(0) 推荐(0)
摘要:// // main.c // 枚举基本概念 #include int main(int argc, const char * argv[]) { // int sex = 0; // 女 // int sex = 1; // 男 // 枚举就是专门用于表示几种固定类型的取值 // 枚举的本质就是基本数据类型, 就是整形 //... 阅读全文
posted @ 2017-08-18 19:41 无天666 阅读(221) 评论(0) 推荐(0)
摘要:// // main.c // 结构体基本概念 // #include int main(int argc, const char * argv[]) { /* 基本数据类型: int double float char 构造类型: 数组/ 结构体 数组: 是用于保存一组相同类型的数据 结构体: 是用于保存一组不同类型的数据 ... 阅读全文
posted @ 2017-08-18 19:17 无天666 阅读(285) 评论(0) 推荐(0)
摘要:// // main.c // 指向函数的指针 #include void test() { printf("哥被执行了\n"); } int getAge() { return 30; } void sum(int v1, int v2) { int res = v1 + v2; printf("res = %i\n", res); } int... 阅读全文
posted @ 2017-08-18 17:03 无天666 阅读(288) 评论(0) 推荐(0)
摘要:// // main.c // 指针和字符串 // // Created by xiaomage on 15/6/14. // Copyright (c) 2015年 xiaomage. All rights reserved. // #include int main(int argc, const char * argv[]) { // 保存字符串 char s... 阅读全文
posted @ 2017-08-18 16:06 无天666 阅读(231) 评论(0) 推荐(0)
摘要:// // main.c // day09 #include int main(int argc, const char * argv[]) { int num = 10; int *numP = &num; num = 55; *numP = 100; // num == *numP printf("%i\n", num);/... 阅读全文
posted @ 2017-08-18 15:04 无天666 阅读(203) 评论(0) 推荐(0)
摘要:// // main.c // 指针基本概念 #include // 基本数据类型作为函数的参数是值传递, 在函数中修改形参的值不会影响到外面实参的值 void change(int value) // int value = 10; { value = 55; printf("哥被执行了\n"); } // 数组作为函数的参数是地址传递, 如果是地址传递在函数中修改... 阅读全文
posted @ 2017-08-18 11:50 无天666 阅读(234) 评论(0) 推荐(0)
摘要:// // main.c // 字符串的基本概念,字符串和字符数组的共用的char[], #include int main(int argc, const char * argv[]) { // 用双引号引起来的就是字符串 printf("Hello, World!\n"); // 如何定义字符串变量, 由于字符串是同一种类型的数... 阅读全文
posted @ 2017-08-18 11:18 无天666 阅读(273) 评论(0) 推荐(0)
摘要:// // main.c // day08 #include int main(int argc, const char * argv[]) { /* int score = 99; int score2 = 88; int scores[88] = {1, 3, 5, 7}; 元素类型 数组名称[元素个数]; */ ... 阅读全文
posted @ 2017-08-17 21:40 无天666 阅读(212) 评论(0) 推荐(0)
摘要:// // main.c // 冒泡排序 // // Created by xiaomage on 15/6/10. // Copyright (c) 2015年 xiaomage. All rights reserved. // #include int main(int argc, const char * argv[]) { /* 思路: 1.先... 阅读全文
posted @ 2017-08-17 20:54 无天666 阅读(231) 评论(0) 推荐(0)
摘要:// // main.c // 进制查表法 // // Created by xiaomage on 15/6/10. // Copyright (c) 2015年 xiaomage. All rights reserved. // #include void printfBinary(int value); void printfBinary2(int value); void p... 阅读全文
posted @ 2017-08-17 20:43 无天666 阅读(235) 评论(0) 推荐(0)
摘要:// // main.c // 数组基本概念 // // Created by xiaomage on 15/6/9. // Copyright (c) 2015年 itcast. All rights reserved. // #include int main(int argc, const char * argv[]) { // 当需要保持很多"相... 阅读全文
posted @ 2017-08-17 18:11 无天666 阅读(216) 评论(0) 推荐(0)
摘要:// // main.c // 03-原码反码补码 #include int main(int argc, const char * argv[]) { // int占4个字节 1个字节8位 int num = 12; /* // 12的二进制 12在内存中存储的是它的补码 00000000 00000000 00000000 000... 阅读全文
posted @ 2017-08-17 17:56 无天666 阅读(526) 评论(0) 推荐(0)
摘要:a.h a.c main.c 阅读全文
posted @ 2017-08-17 16:07 无天666 阅读(220) 评论(0) 推荐(0)
摘要://main.c //include基本概念 //include是预处理指令,翻译之前会替换,编译之前左的处理,#都是预处理指令,翻译时候会添加别的内容进来。 #include // #是预编译指令,告诉系统printf函数是存在的, 告诉系统printf函数的格式(声明printf函数) // include的作用, 是将include右边的文件拷贝(纯拷贝)到当前文件中 int m... 阅读全文
posted @ 2017-08-17 15:00 无天666 阅读(253) 评论(0) 推荐(0)
摘要:// // main.c // 递归函数 // // Created by xiaomage on 15/6/7. // Copyright (c) 2015年 xiaomage. All rights reserved. // #include void scanfNumber(); //声明 void test(); //声明 int main(int argc, ... 阅读全文
posted @ 2017-08-17 11:30 无天666 阅读(240) 评论(0) 推荐(0)
摘要:// // main.c // 函数练习 // // Created by xiaomage on 15/6/7. // Copyright (c) 2015年 xiaomage. All rights reserved. // #include /* 【理解】写一个函数打印一朵玫瑰花 【理解】写一个函数打印N朵玫瑰花 【理解】写一个函数从键盘输入三个整型数字,找出其最大值 ... 阅读全文
posted @ 2017-08-17 11:17 无天666 阅读(228) 评论(0) 推荐(0)
摘要:// // main.c // 函数的声明和定义 // // Created by xiaomage on 15/6/7. // Copyright (c) 2015年 xiaomage. All rights reserved. // #include 以前我们在定义函数的时候, 一直都是把函数定义在main函数的前面,有了函数声明就可以函数定义在main函数之后了 /* vo... 阅读全文
posted @ 2017-08-17 11:07 无天666 阅读(418) 评论(0) 推荐(0)
摘要:// // main.c // Switch练习2 // // Created by xiaomage on 15/6/6. // Copyright (c) 2015年 xiaomage. All rights reserved. // #include int main(int argc, const char * argv[]) { // 从键盘输入一个月份,输出对应... 阅读全文
posted @ 2017-08-17 10:41 无天666 阅读(407) 评论(0) 推荐(0)
摘要:#include int main(int argc, const char * argv[]) { // int 占用4个字节 double 占用8个字节 // 只是相同类型的数据才能进行运算, 隐式类型转换 将小类型转换为大类型, 然后再进行运算 // 在赋值的时候系统又给我们进行了一次隐式类型转换 // 发现, 如果在隐式类型转换的时候, 将大... 阅读全文
posted @ 2017-08-16 21:32 无天666 阅读(340) 评论(0) 推荐(0)
摘要:#include int main(int argc, const char * argv[]) { // 要求: 存储用户输入的整数 // 1.用户输入的整数确定吗? 不确定 --> 定义变量 // 2.如何接收用户输入的整数? scanf函数 // scanf格式: scanf("格式化字符串", 列表项); --> scanf("%i", 变量... 阅读全文
posted @ 2017-08-16 19:54 无天666 阅读(203) 评论(0) 推荐(0)
摘要:【退出eclipse】 【进入eclipse的工作区间】 【删除 .metadata文件夹,确保 .metadata文件夹得隐藏文件也要删除】 【重启eclipse,并重新导入你的工程】 阅读全文
posted @ 2017-08-15 16:08 无天666 阅读(158) 评论(0) 推荐(0)
摘要:#include int main() { // 整型常量 10; // 实型常量(小数) // 单精度float / 双精度double // 注意: 默认情况下编写的小数都是双精度的实型常量, 也就是默认情况下所有小数都是double 10.1;// 双精度double 88.8;// 双精度double ... 阅读全文
posted @ 2017-08-15 07:20 无天666 阅读(421) 评论(0) 推荐(0)
摘要:https://segmentfault.com/u/zhaomenghuan 阅读全文
posted @ 2017-08-14 15:34 无天666 阅读(117) 评论(0) 推荐(0)
摘要:dmg和package是安装文件,dmg直接拖进应用程序中,pkg要进行安装。 playfround是swift项目。 --ios -----oc(面向对象的C) -----swift(oc的封装) 1963年剑桥大学退出cpl,1967年对cpl简化推出bcpl,1970贝尔实验室对bcpl简化推出b语言,1972-1973贝尔实验室在B语言基础上推出c语言。 ANSI是美国国家标准局。... 阅读全文
posted @ 2017-08-13 17:22 无天666 阅读(301) 评论(0) 推荐(0)
摘要:转载请注明出处: 前言: 本文是我读《Android内核剖析》第13章 View工作原理总结而成的,在此膜拜下作者 。同时真挚地向渴望了解 Android 框架层的网友,推荐这本书,希望你们能够在android开发里学到更多的知识 。 整个View树的绘图流程是在ViewRoot.Java类的per 阅读全文
posted @ 2017-08-04 15:12 无天666 阅读(882) 评论(0) 推荐(0)
摘要:在Android系统中,有一种特殊的视图,称为SurfaceView,它拥有独立的绘图表面,即它不与其宿主窗口共享同一个绘图表面。由于拥有独立的绘图表面,因此SurfaceView的UI就可以在一个独立的线程中进行绘制。又由于不会占用主线程资源,SurfaceView一方面可以实现复杂而高效的UI, 阅读全文
posted @ 2017-08-04 10:54 无天666 阅读(465) 评论(0) 推荐(0)
摘要:一、写作前面 当我们做应用的时候,需要用户配置一些信息,而这就是通常所说的应用设置。 对于Android系统来说,系统本身的设置带来的用户体验和习惯已经深入人心,在我们的应用中同样用到类似的设置页, 那么用户使用起来就会更加亲切和方便。是吗?那我们应该怎么做到呢?这就要靠本文的主人公Preferen 阅读全文
posted @ 2017-08-03 20:53 无天666 阅读(303) 评论(0) 推荐(0)
摘要:依赖管理 这会是一个系列,所以如果你还没有看我之前的几篇文章,请先查看以下文章: Gradle for Android 第一篇( 从 Gradle 和 AS 开始 ) Gradle for Android 第二篇( Build.gradle入门 ) Gradle for Android 第四篇( 构 阅读全文
posted @ 2017-08-03 10:29 无天666 阅读(871) 评论(0) 推荐(0)
摘要:Gradle之依赖管理 泡在网上的日子 / 文 发表于2015-01-29 16:12 第8824次阅读 Gradle,Android Studio 2 编辑推荐:稀土掘金,这是一个针对技术开发者的一个应用,你可以在掘金上获取最新最优质的技术干货,不仅仅是Android知识、前端、后端以至于产品和设 阅读全文
posted @ 2017-08-03 10:01 无天666 阅读(881) 评论(0) 推荐(0)
摘要:1 前言 前一段时间有人在我的邪教群里问「刚学 Android 不久,对 Gradle 不懂,看了很多资料依然一知半解,希望张哥给讲讲 Gradle 」,没想到群里很多人都响应,表示同感,有人在群里推荐了一本书,说看这本书就行了。说实在的,我不反对看书,但是我反对的是为了弄懂一个知识点就需要看一本书 阅读全文
posted @ 2017-08-02 14:42 无天666 阅读(693) 评论(0) 推荐(0)