iOS学习—OC部分
文章平均质量分 75
学习笔记666
这个作者很懒,什么都没留下…
展开
-
Block的回顾
Block最常见的就是网络请求中,我们先写一个网络请求的类HttpTool.h#import <Foundation/Foundation.h>@interface HttpTool : NSObject-(void)loadData:(void(^)(NSString *jsonData))callBack;@endHttpTool.m#import "HttpTool.h"@implem原创 2016-09-18 14:03:31 · 339 阅读 · 0 评论 -
野指针和空指针
Person *p = [[Person alloc] init]; /* 只要一个对象被释放了,我们就称这个对象为“僵尸对象” 当一个指针指向一个僵尸对象,我们就称这个指针为“野指针” 只要给一个野指针发送消息就会报错 */ [p release]; // 1-1=0 /* 空指针 nil 0原创 2016-01-10 20:44:04 · 1333 阅读 · 0 评论 -
SEL类型
//1.SEL类型的第一个作用:配合对象/类 来检查有没有实现某一个方法 SEL sel = @selector(setAge:); Person *p = [[Person alloc] init]; //判断p对象中有没有实现 -号开头的setAge:方法 BOOL flag = [p respondsToSelector:sel];原创 2016-01-10 14:33:58 · 465 阅读 · 0 评论 -
OC类对象
//// main.m// OC语言学习#import #import "Person.h"int main(int argc, const char * argv[]) { /* 类的本质其实也是一个对象(类对象) 程序中第一次使用该类的时候被创建,在整个程序中只有一份; 此后每次使用都是这个类对象,它在程序运行时一直存在。原创 2016-01-10 13:53:32 · 483 阅读 · 0 评论 -
Selector 有什么用途?
我们会在几个地方应用selector1. Target/Action在Interface Builder中建立了一个UIButton或是NSButton控件,然后将按钮连接到controller中IBAction的method上,这时候我们的Controller就是Button的target,而要求controller执行的method就叫做action。action就是一个s原创 2016-01-26 16:36:16 · 817 阅读 · 0 评论 -
Selector的初步认识
可以先对Selector做一个简短的定义:Selector就是用字符串表示某个Object的某个method。更术语的说法是:Selector就是Objective-C的virtual table中指向实际执行function pointer的一个C字符串。我们先来看看Objective-C Class/Object 到底是什么?Objective-C的程序在compile tim原创 2016-01-26 15:51:41 · 400 阅读 · 0 评论 -
使用NSKeyedArchiver进行深拷贝
//// main.m// OC语言学习#import int main(int argc, const char * argv[]) { @autoreleasepool { NSData *data; NSMutableArray *dataArray = [NSMutableArray arrayWithObjects:原创 2015-12-23 13:59:51 · 461 阅读 · 0 评论 -
instancetype和id的区别
/* instancetype 和 id 都是万能指针,指向对象。 不同点: 1.id在编译的适合不能判断对象的真实类型,instancetype在编译的时候可以判断对象的真实类型 2.id可以用来定义变量,可以作为返回值类型,可以作为形参类型;instancetype只能作为返回值类型 注意:以后凡是自定义构造方法,返回值类型尽量使用instancetype,不要使用i原创 2016-01-07 19:53:24 · 2932 阅读 · 0 评论 -
new的实现原理
//// main.m// OC语言学习#import #import "Person.h"int main(int argc, const char * argv[]) { /* Person *p = [Person new]; new做了3件事: 1.开辟存储空间 2.初始化所有属性(成原创 2016-01-07 19:18:13 · 555 阅读 · 0 评论 -
归档— NSKeyedArchiver
//// main.m// OC语言学习#import int main(int argc, const char * argv[]) { /* 在OC语言中,归档是一个过程,即用某种格式来保存一个或多个对象,以便以后还原这些对象。 通常,这个过程包括将多个对象写入文件中,以便以后读取该对象。 */ @autoreleas原创 2015-12-23 11:58:06 · 347 阅读 · 0 评论 -
__block 与 __weak 关键字
1. __block在一个block里头如果使用了在block之前的变量,会将这份变量先复制一份再使用。也就是说,在没有特别声明的状况下,对我们目前所在的block来说,所有的外部变量都是只能读取,不能修改。如果我们想要让某个block可以修改外部某个变量,我们就要在这个需要可以被blcok改动的变量前面,加上 __block 关键字。//像这样是不合法的程序int i = 1;voi原创 2016-01-28 11:54:01 · 504 阅读 · 0 评论 -
NSCoding初步认识
所谓序列化,就是“对象遍档案,档案变对象”。我们可以将目前程序中使用的对象转换成资料格式,因此可以存成档案,或是在网络上传输、交换,反之,我们也可以把已经存储的档案,再恢复成对象。对比其他程序语言,JavaScript的serialization格式就是JSON,而PHP语言里头,我们会调用serialize()和unserialize()转换PHP对象。在Cocoa/Cocoa To原创 2016-01-29 14:11:49 · 642 阅读 · 0 评论 -
NSCoding的常见用途
我们会在以下这些场合用到NSCoding:1. XIB/Storyboard我们在创建一个UIView的subclass的时候,会注意到,如果我们希望在初始化这个view的时候就要做一些事情,不但要覆盖掉initWithFrame:方法,也要覆盖initWithCoder:方法。如果这个view是我们用代码创建的,那么会调用到initWithFrame:方法,但如果我们是XIB则会调用原创 2016-01-29 14:41:10 · 1042 阅读 · 0 评论 -
利用MJExtension处理OC里"id"关键字
id是Objective-C里的关键字,我们一般用大写的ID替换,但是往往服务器给我们的数据是小写的id,这个时候就可以用MJExtension框架里的方法转换一下:+ (NSDictionary *)mj_replacedKeyFromPropertyName{ return @{@"ID": @"id"};}模型头文件:/** * ID */@property(nonatom原创 2016-07-14 16:28:10 · 11512 阅读 · 0 评论 -
Foundation+Log.m,让网络请求回来的中文被unicode编码的数据汉字显示
文件名:Foundation+Log.m#import @implementation NSDictionary (Log)- (NSString *)descriptionWithLocale:(id)locale{ NSMutableString *string = [NSMutableString string]; // 开头有个{ [strin转载 2016-07-01 15:33:59 · 1967 阅读 · 0 评论 -
Objective-C assign、retain、copy区别
这三个关键字在用@property生命属性时使用,用来标明变量的内存管理属性转载 2016-04-06 11:31:16 · 442 阅读 · 0 评论 -
字符串常用方法—文件内容读写
//【字符串文件读写】 //读取文件中的字符串 NSString *path = @"/Users/yongkaidong/Desktop/note.txt"; NSError *error = nil; NSString *str = [NSString stringWithContentsOfFile:path encoding:NSUTF8Strin原创 2016-01-30 19:58:36 · 399 阅读 · 0 评论 -
Block的注意点
//// main.m// OC语言学习#import int main(int argc, const char * argv[]) { //1.block中可以访问外面的变量 int a = 10; void (^myBlock)() = ^{ NSLog(@"a = %i",a); }; myBlock();原创 2016-01-13 20:03:56 · 360 阅读 · 0 评论 -
Block的应用场景
//// main.m// OC语言学习#import /*void geToWorkPrefix(){ NSLog(@"起床"); NSLog(@"穿衣服"); NSLog(@"洗漱"); NSLog(@"吃早饭"); NSLog(@"去上班");}void geToWorkSubfix(){ NSLog(@"收拾东西")原创 2016-01-12 22:35:46 · 407 阅读 · 0 评论 -
Block和typedef
//// main.m// OC语言学习#import int sum(int value1, int value2){ return value1 + value2;}int minus(int value1, int value2){ return value1 - value2;}typedef int (*calcute)(int,int)原创 2016-01-12 22:06:50 · 504 阅读 · 0 评论 -
Block的基本概念
void printRose(){ printf("打印玫瑰花\n");}int main(int argc, const char * argv[]) { //调用函数 printRose(); //打印玫瑰花 //1.指向函数的指针 /* void:指向的函数没有返回值 ():指向的函数没有形参 (*ros原创 2016-01-12 21:46:49 · 609 阅读 · 0 评论 -
copy(浅拷贝-指针拷贝)和mutableCopy(深拷贝-内容拷贝)
原创 2016-02-10 12:39:48 · 505 阅读 · 0 评论 -
归档—使用XML属性列表进行归档
//// main.m// OC语言学习#import int main(int argc, const char * argv[]) { /* 在OC语言中,归档是一个过程,即用某种格式来保存一个或多个对象,以便以后还原这些对象。 通常,这个过程包括将多个对象写入文件中,以便以后读取该对象。 */ @autoreleas原创 2015-12-23 11:44:46 · 476 阅读 · 0 评论 -
copy和mutableCopy方法简单认识
//// main.m// OC语言学习#import int main(int argc, const char * argv[]) { @autoreleasepool { //copy和mutableCopy方法// NSMutableArray *dataArray = [NSMutableArray arrayWithObject原创 2015-12-23 11:25:17 · 326 阅读 · 0 评论 -
NSFileHandle处理文件2
//// main.m// OC语言学习#import int main(int argc, const char * argv[]) { @autoreleasepool { //追加文件"fileA"到"fileB"的末尾 NSFileHandle *inFile, *outFile; NSData *buffer;原创 2015-12-23 10:14:39 · 273 阅读 · 0 评论 -
私有变量和私有方法
//// Person.h// OC语言学习#import /* 实例变量(成员变量)既可以在@interface中定义, 也可以在@implementation中定义 */@interface Person : NSObject{ @public int _age; @protected double _heigth;原创 2016-01-05 22:02:44 · 728 阅读 · 0 评论 -
多用字面量语法,少用与之等价的方法
//1.字面数值 NSNumber *someNumber = [NSNumber numberWithInt:1]; NSNumber *someNumber2 = @1; //字面量形式 NSNumber *floatNumber = @2.5f; NSNumber *doubleNumber = @3.14159; //2.字面量数原创 2016-01-05 21:46:57 · 371 阅读 · 0 评论 -
基本的字符串操作
//// main.m// OC语言学习#import int main(int argc, const char * argv[]) { @autoreleasepool { //Foundation——NSString类用于处理字符串对象 //description方法 /*原创 2015-12-21 12:00:55 · 422 阅读 · 0 评论 -
方法numberWithInt: 和 numberWithInteger: 使用差别
/* 方法numberWithInt:和 numberWithInteger: 使用差别 1.如果使用numberWithInt:方法创建一个整型数,需要使用intValue获取它的值,使用%i作为格式化字符串显示它的值 2.如果使用numberWithInteger:方法创建一个整型数,需要使用interValue,也可以转换成lo原创 2015-12-21 11:08:59 · 2069 阅读 · 0 评论 -
Foundation—数字对象NSNumber的简单认识
//// main.m// OC语言学习#import int main(int argc, const char * argv[]) { @autoreleasepool { /* 数字数据类型:int型、float型、long型。都是OC语言中的基本数据类型,都不是对象,也就是说不能向它们发送消息。原创 2015-12-21 11:01:55 · 413 阅读 · 0 评论 -
自定义类和类的实例化
//// Fraction.h#import /* @interface 部分用于描述类和类的方法 */@interface Fraction : NSObject- (void)print;- (void)setNumerator:(int)n;- (void)setDenominator:(int)d;@end//// Fraction.m#import原创 2015-12-17 15:59:04 · 903 阅读 · 0 评论 -
合成存取方法 @property @synthesize
//// Fraction.h#import /* @interface 部分用于描述类和类的方法 */@interface Fraction : NSObject/* 合成存取方法 第一步:在接口部分使用 @property 指令标示属性 */@property int numerator,denominator;- (void)print;//- (voi原创 2015-12-17 16:49:40 · 287 阅读 · 0 评论 -
OC语言使用“消息结构”(messaging structure)而非“函数调用”(function calling)
OC语言使用“消息结构”(messaging structure)而非“函数调用”(function calling)消息与函数调用之间的区别看上去就像这样://MessagingObject *obj = [Object new];[obj performWith:parameter1 and:parameter2];//function callingObject *obj =原创 2015-12-30 14:49:53 · 886 阅读 · 0 评论 -
结构体作为对象的属性
//// main.m// OC语言学习#import typedef struct{ int year; int month; int day;} Date;@interface Student : NSObject{ @public NSString *_name; Date _birthday;}- (void原创 2015-12-28 21:37:45 · 522 阅读 · 0 评论 -
字符串NSRange的使用
//// main.m// OC语言学习#import int main(int argc, const char * argv[]) { @autoreleasepool { /* NSString类(和其他Foundation类)的一些方法中,使用了特殊的数据类型NSRange创建范围对象。实际上,它是结构的typedef定义,包含原创 2015-12-21 13:39:54 · 1401 阅读 · 0 评论 -
可变字符串的基本操作
//// main.m// OC语言学习#import int main(int argc, const char * argv[]) { @autoreleasepool { NSString *str1 = @"This is string A"; NSString *search, *replace; NSMutab原创 2015-12-21 16:30:30 · 390 阅读 · 0 评论 -
NSValue可以将结构转化为对象,并把它存储在集合中。
//// main.m// OC语言学习#import int main(int argc, const char * argv[]) { @autoreleasepool { /* 数组只能存储对象,不能存储像 int 这样的基本数据类型。 为了解决这个问题,需要使用 NSNumber 对象数组,而不是 in原创 2015-12-22 10:50:24 · 447 阅读 · 0 评论 -
NSFileHandle处理文件
//// main.m// OC语言学习#import int main(int argc, const char * argv[]) { /* 处理文件: 1.打开文件,并获取一个NSFileHandle对象,以便在后面的I/O操作中引用该文件 2.对打开的文件执行I/O操作 3.关闭文件 */ @autoreleasep原创 2015-12-23 10:08:20 · 298 阅读 · 0 评论 -
NSFileManager— NSProcessInfo类的使用
//// main.m// OC语言学习#import int main(int argc, const char * argv[]) { @autoreleasepool { //复制文件和使用 NSProcessInfo 类 //NSProcessInfo类中包含了一些方法,允许你设置或检索正在运行的应用程序(即进程)的各种类型的信息原创 2015-12-23 09:51:57 · 310 阅读 · 0 评论 -
@property 的基本认识
//// Person.h// OC语言学习#import /* @property 是一个编译指令 可以用@property来代替getter和setter 同时系统会生成一个 _开头的成员变量。(@property帮我们生成的成员变量,是一个私有的成员变量,也就是说在.m文件中生成的,不是在.h文件中生成的) 如果重写了setter方法,那么@property原创 2016-01-06 20:07:18 · 503 阅读 · 0 评论