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

浙公网安备 33010602011771号